WeChall Training:Crypto-Caesar WriteUp

题目链接:http://www.wechall.net/challenge/training/crypto/caesar/index.php

凯撒密码其实就是按照字母表顺序,通过将字母前移或者后移一定的距离,来对原文进行加密

可能是将原字母向右移动n位,也可能是将原字母向左移动n位

因此我们就有了下面这段代码:

#include
#include

int main()
{
    char a[95];
    char aa[95] = "BPM YCQKS JZWEV NWF RCUXA WDMZ BPM TIHG LWO WN KIMAIZ IVL GWCZ CVQYCM AWTCBQWV QA XOPOQLAUPNMW";
    //规定向右移为正,我们先假设加密的时候是向右移动若干位
    //因此我们解密的时候就是向左移动,这时候是-n
    //运行完之后,如果没有找到答案,就换成+n
    for(int n = 1; n<=25; n++)
    {
        printf("%d\n", n);
        memcpy(a, aa, 95);
        for(int i=0; i<94; i++)
        {
            if(a[i]!=' ')
            {
                a[i]=((a[i]-65-n)%26+26)%26+65;
            }
        }
        for(int i=0; i<94; i++)
        {
            printf("%c", a[i]);
        }
        printf("\n");
    }
    return 0;
}

结果:
WeChall Training:Crypto-Caesar WriteUp_第1张图片

你可能感兴趣的:(WeChall)