NYOJ-768移位密码,最简单的代替密码;

来源:互联网 发布:网络电子游戏 360 编辑:程序博客网 时间:2024/05/27 09:44

移位密码

时间限制:1000 ms  |  内存限制:65535 KB
难度:0
                                                                                                                             ->   Link   <- 

     还有1个半小时考信息安全导论,昨晚心血来潮在oj上看到这几个题,简直就是水啊,完全可以暴力,我想出题人能不能专业一点用逆元解,这样还更有利;

    当然这个题不用逆元,最简单的代替密码了,好像书上提过的最早出现的凯撒密码(公元前一世纪,古罗马皇帝)

    加密公式:Ek(m)=(m+k)%q;

    解密公式:Dk(c)=  (c-k)%q;

       说白了就是明文左移多少位,密文再右移回来就是了;

#include<bits/stdc++.h>using namespace std;char a[55];int main(){    int k;    while(~scanf("%s%d",a,&k))    {        int x=strlen(a);        for(int i=0;i<x;i++)        {            int xx=a[i]-'A'-k;            if(xx<0)//注意对称,实际上是一个循环;                xx+=26;            printf("%c",xx+'A');        }        printf("\n");    }    return 0;}



0 1
原创粉丝点击