ISCC-BASIC-50-easy?

来源:互联网 发布:淘宝充值话费怎么退款 编辑:程序博客网 时间:2024/05/16 05:13

easy?

50

     密文mzdvezc是用仿射函数y=5x+12加密得到的,试对其解密。


分析:

查了查百科,了解了什么是仿射函数。

百度百科关于仿射加密法的介绍

    仿射函数里用0~25表示字母a~z。

加密函数其实是y=(5x+12)mod 26,那么如何算出解密函数呢?

设解密函数为y=(m*x+n)mod 26

先求5的逆元。m是5关于Z26的逆元,则有(5*m)mod 26=1,不难算出m=21。

再求n。

  解密函数就是加密函数的逆函数,即(x,y)是加密函数的一组解,那么(y,x)就是解密函数的一组解。

  那么假设x=3,y=(5*3+12)mod 26=1。相应的逆函数的解就因该是(1,3)。即 3=(21*1+n)mod 26,式子可以写成26*N+3=21*1+n,那么取N=1,则 n=8,故y=(21x+8)mod 26。

  当然,这里N取不同值,n的值就会不同,但是得到的函数其实是一样的,只是相差26的整数倍而已,用来计算的话,得到的答案都是一样的。

  比如,N=0,n=-18,则y=(21x-18)mod 26,它和y=(21x+8)mod 26算出来的答案是一样的,只要n之间的差是26的整数倍就可以了,

  8-(-18)=26,  34-8=26, 所以n=34也可以,以此类推。

然后代码实现:

#include<iostream>using namespace std;int main(){    char a[]={'m','z','d','v','e','z','c'};    for(int i=0;i<7;i++)    {        int t;        t=a[i]-'a';        t=(21*t+8)%26;        a[i]=t+'a';        cout<<a[i];    }    return 0;}

答案就是anthony

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 牙齿蛀了个洞怎么办办 牙齿痛怎么办才能治好? 门牙牙齿蛀掉了怎么办 吃了辣的牙齿痛怎么办 牙颈部楔状缺损怎么办 牙齿磨了很疼怎么办 小孩牙有窟窿疼怎么办 西瓜吃多了尿不停怎么办 吃了个西瓜不停拉肚子怎么办 例假完了又来了怎么办 肾上面有个肿瘤怎么办 膀胱壁毛糙增厚怎么办 痔疮手术后尿不出来怎么办 小牛肚一天不尿怎么办 小孩拉肚一直不好怎么办 尿涨但是尿很少怎么办 十四岁尿血医生说是肾炎怎么办 吃肉反胃想吐怎么办 母牛排尿带血尿发烧怎么办 4岁发烧40度怎么办 狗狗拉肚子咳漱哮喘怎么办 拉肚子拉脱水人无力怎么办 孕中期拉稀拉水怎么办 吃坏肚子拉稀水怎么办 手上起小疙瘩疼怎么办 手上长东西很痛怎么办 七八十斤猪拉稀怎么办 宝宝扁桃体化脓反复发烧怎么办 骑单车后膝盖痛怎么办 孩子一运动就喘怎么办 小孩晚上咳嗽很厉害怎么办 1岁宝宝夜里咳嗽怎么办 咳嗽咳的胸疼怎么办 儿童又咳又喘怎么办 咳嗽咳到胸口痛怎么办 咳嗽咳得肋骨疼怎么办 孕妇咳嗽咳得胸口疼怎么办 怀孕偏左侧宫腔怎么办 晨起活动后咳嗽怎么办 运动后乳房坠痛怎么办 嗓子痒咳嗽怎么办夜间最为难受