2-rail and caesar cipher using C



我有一个家庭作业,要用凯撒密码和双轨密码加密和解密一个单词。虽然我理解这个概念,但在将它放入代码中时遇到了巨大的困难。

锻炼*使用单词"Alexandrossa",并使用双轨围栏方法加密它,然后通过2个字母转发到Caesar(即A变为C,或X变为Z)

这是我的代码:

#include <stdio.h>
#include <math.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
    char a[2][6] = {'A', 'L', 'E', 'X', 'A', 'N', 'D', 'R', 'O', 'S', 'S', 'A'};
    char row, col;
    for (row = 0; row < 2; ++row)
    {
        for (col = 0; col < 6; ++col)
        {
            printf("%c", a[row][col]);
        }
        printf("n", a[row][col]);
    }
    return 0;
}

它显示为…

亚历山大

DROSSA

但我无法将输出显示为:

AEADOS

LXNRSA

结果:AEADOSLXNRSA

如果有人能帮我完成这个程序,至少给我一些提示,让我毫无问题地完成凯撒密码的部分,我真的很感激。谢谢。

您可以循环遍历字符串,并根据需要操作字符串。

#include <stdio.h>
int main() {
    char a[2][6] = {'A', 'L', 'E', 'X', 'A', 'N', 'D', 'R', 'O', 'S', 'S', 'A'};
    char row, col;
    printf("Rail cipher:n");
    for (row = 0; row < 1; ++row) {
        for (col = 0; col < 12; col += 2) {
            printf("%c", a[row][col]);
        }
        //printf("n");
        for (col = 0; col < 12; col += 2) {
            printf("%c", a[row][col + 1]);
        }
    }
    printf("nCaesar cipher:n");
    for (row = 0; row < 12; ++row) {
        char c = a[0][row];
        c = (char) (c + 2);
        printf("%c", c);
    }
    return 0;
}

上面的代码只是用两种方法对字符串进行加密。解密也是通过颠倒算法来完成的。

测试

$ ./a.out
Rail cipher:
AEADOSLXNRSA
Caesar cipher:
CNGZCPFTQUUC
Process finished with exit code 0

最新更新