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
- ISCC-BASIC-50-easy?
- ISCC-BASIC-50-神秘纸条
- ISCC-BASIC-100-恶作剧or机密?
- ISCC 2016 WEB WP
- ISCC某题题解
- ISCC reverse writeup-301
- ISCC 2017 writeup(部分)
- Easy-50
- 继续AI,介绍下EASY AI SYSTEM Basic manual
- ISCC 2016 逆向部分 writeup
- easy
- Easy
- @Basic
- Basic
- Basic
- BASIC
- @Basic
- @Basic
- TCP连接状态详解
- virtualenv&webiopi 实践
- springmvc笔记
- 设计模式学习之策略模式:报价管理系统
- strlen 与 sizeof的区别
- ISCC-BASIC-50-easy?
- 【Flume】Rpc sink XX closing Rpc client:NettyAvroRpcClient {xx} …… Failed to send events 问题解决
- hough圆检测
- VS2008格式布局快捷键
- 我的Cocos2d-x学习笔记(十三)CCLabelTTF、CCLabelAtlas、CCLabelBMFont
- JavaBean在Java Web中访问范围总结
- iOS开发学习第九课——指针
- 安卓逆向学习笔记(10)- 安卓逆向学习资料
- jquery操作select(取值,设置选中)