/* * Caesar cipher */ #include #include #include #define N 128 void printbits(unsigned char v); int main(int argc, char *argv[]) { unsigned char cleartext[] = "There are only 10 types of people"; unsigned char key[] = "xafshg%cjagec!f,kasjghfd kawjerc!"; unsigned char ciphertext[N]; unsigned char deciphertext[N]; int i, l; l = strlen((const char *)cleartext); printf("%s\n\n", cleartext); for (i = 0; i < l; i++) { printbits(cleartext[i]); } printf("\n\n"); for (i = 0; i < l; i++) { printbits(key[i]); } printf("\n\n"); for (i = 0; i < l; i++) { ciphertext[i] = cleartext[i] ^ key[i]; printbits(ciphertext[i]); } printf("\n\n"); for (i = 0; i < l; i++) { deciphertext[i] = ciphertext[i] ^ key[i]; printbits(deciphertext[i]); } deciphertext[l] = '\0'; printf("\n\n"); printf("%s\n", deciphertext); return 0; }