簡體   English   中英

Caesar Cipher C程序未正確加密

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM