凯撒加密程序不会产生预期的密文

时间:2013-04-30 18:19:34

标签: c encryption

我是c的新手,我正在编写一个程序,用Caesar cipher加密文本文件。每当我运行它时,它只是将字母转换为SOH字符。

encryption.c

char *lowerAlpha= "abcdefghijklmnopqrstuvxxyz";
char *upperAlpha= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int encrypt(int c, int amount)
{
    char* alpha;
    int retVal = c;
    int i;

    if(isalpha(c))
    {
        if(islower(c))
        {
            alpha = lowerAlpha;
            i = (c - 'a' - amount) % 26;
            retVal = alpha[i];

        }
        else if(isupper(c))
        {
            alpha = upperAlpha;
            i = (c -'A' - amount) % 13;
            retVal = alpha[i];
        }
    }
    return retVal;
}

在另一个我使用主要方法的文件中

encryptFile(inputfile, outputfile, 13);

1 个答案:

答案 0 :(得分:0)

您在加密过程中减去'A''a'以将字符值转换为0 .. 25范围,并且您永远不会添加任何内容以将其重新转换为字母。