[英]Caesar Cipher C program is not encrypting correctly
我在C上為我的班級編寫了一個Caesar Cipher程序,它似乎沒有正確加密。 該程序從句子“快速布朗的狐狸跳過懶惰狗”中獲取輸入,並使用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;
}
無論如何你可以幫助我,這將是偉大的
謝謝你的時間。
您只能/解密字符串的第一個字符。 您必須循環遍歷字符串的所有字符。
並且SPACE字符的加密/解密存在問題。 我把這作為鍛煉給你。
#include <ctype.h>
int Caesar_encrypt(char *p, char *s, int enckey){
for(; *p ; ++s, ++p){
*s = isupper(*p) ? (*p - 'A' + enckey)%26 + 'A' : *p;
}
*s = '\0';
return 0;//?
}
int Caesar_decrypt(char *p, char *s, int enckey){
for(; *p ; ++s, ++p){
*s = isupper(*p) ? (*p - 'A' + (26-enckey))%26 + 'A' : *p;
}
*s = '\0';
return 0;//?
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.