我用 C 为我的类(class)编写了一个凯撒密码程序,但它似乎没有正确加密。该程序从句子“THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG”中获取输入并使用从键盘输入中获取 enckey 的 Caesar Cipher 方法对其进行加密。当它加密的时候,它没有正确地做,它把它解密成废话。我查看了它,但无法弄清楚为什么它没有以正确的方式加密句子。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int Caesar_encrypt(char *p, char *s, int enckey);
int Caesar_decrypt(char *p, char *s, int enckey);
int main(void){
char A[]="THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG";
char B[50], /* stores encrypted output string */
C[50]; /* stores decrypted output using string B as source */
int enckey,
statuse, statusd; /* they store return values from the functions */
printf("Plaintext for encryption is : %s \n", A);
printf("Input numerical key for Caesar's cypher : ");
scanf("%d",&enckey);
putchar('\n');
printf("You entered encryption key %d \n", enckey);
/* encrypt by Caesar's cypher */
statuse= Caesar_encrypt( A, B, enckey);
printf("Ciphertext is : %s \n", B);
/* decrypt by Caesar's cypher */
statusd = Caesar_decrypt( B, C, enckey);
printf("Decrypted text is: %s \n", C);
exit (0);
}
int Caesar_encrypt(char *p, char *s, int enckey){
*s = ((*p + enckey)%26) + 65 ;
return 0;
}
int Caesar_decrypt(char *p, char *s, int enckey){
*s = ((*p - enckey)%26) + 65 ;
return 0;
}
如果你能在任何方面帮助我,那就太好了
感谢您的宝贵时间。
您只对字符串的第一个字符进行加密/解密。您必须遍历字符串的所有字符。
并且空格字符的加密/解密有问题。我将此作为练习留给您。
我是一名优秀的程序员,十分优秀!