簡體   English   中英

使用C的雙軌和凱撒密碼

[英]2-rail and caesar cipher using C

我已經獲得了使用Caesar和2軌密碼加密和解密單詞的作業。 雖然我理解這個概念,但是在將它放入代碼時遇到了很大的麻煩。

練習 *使用單詞“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;
}

它顯示為......

ALEXAN

DROSSA

但是我無法將輸出顯示為:

AEADOS

LXNRSA

結果:AEADOSLXNRSA

如果有人可以幫我完成這個程序,至少給我一些暗示完成Caesar Cipher部分沒有問題,我真的很感激。 謝謝。

您可以遍歷字符串,只需根據需要操作字符串。

#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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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