信息安全 - 任意单表代替密码之仿射密码的代码实现和破解 e(x)=ax+b (mod 26)
2017-03-23 00:26
295 查看
仿射密码算法
加密函数形式:e(x)=ax+b (mod 26), a,b∈Z/(26)
具有唯一解的充要条件:gcd( a,26)=1 n
算法描述:设P=C=Z/(26),K={(a,b) ∈Z/(26)×Z/(26)| gcd(a,26)=1}
对k=(a,b) ∈K,定义ek (x)=ax+b (mod 26),dk (y)=a-1 (yb)(mod 26),x,y ∈Z/(26)
加法与乘法互不相关,可能的密钥是26+11个(a可取值a=3,5,7,9,11,15,17,19,21,23,25)
代码实现:
Visual Studio 2015 编译测试结果:
加密函数形式:e(x)=ax+b (mod 26), a,b∈Z/(26)
具有唯一解的充要条件:gcd( a,26)=1 n
算法描述:设P=C=Z/(26),K={(a,b) ∈Z/(26)×Z/(26)| gcd(a,26)=1}
对k=(a,b) ∈K,定义ek (x)=ax+b (mod 26),dk (y)=a-1 (yb)(mod 26),x,y ∈Z/(26)
加法与乘法互不相关,可能的密钥是26+11个(a可取值a=3,5,7,9,11,15,17,19,21,23,25)
代码实现:
#include <iostream> #include<math.h> using namespace std; //模的取逆 int dx, y, q; void extend_Eulid(int aa, int bb) { if (bb == 0) { dx = 1;y = 0;q = aa; } else { extend_Eulid(bb, aa%bb); int temp = dx; dx = y; y = temp - aa / bb*y; } } // int main() { int a, b, YN, i, l; char c[100]; int x[100], y[100]; char ex[100]; cout << "请依次输入k =( a, b )的a, b值,其中 a,b ∈ Z/(26),gcd( a,26) = 1 :" << endl; cin >> a >> b; cout << "那么你的加密函数就是 ex = " << a << "*x + " << b << endl; cout << endl <<"接下来输入你要加密的明文(小写字母):" << endl; cin >> c;//明文 l = strlen(c); for (i = 0; i < l; i++) { x[i] = c[i] - 'a'; ex[i] = (a * x[i] + b) % 26;//数字 } cout << "加密后的字母为:"; for (i = 0; i < l; i++) { cout << char(ex[i] + 'a');//转字符 } cout << endl << endl; cout << "是否要解密原文(输入1则确定,输入其他则取消):"; cin >> YN; while (YN == 1) { extend_Eulid(a, 26);//取逆 dx = (dx+26) % 26; for (i = 0; i < l; i++) { y[i] = (dx*int(ex[i]) - dx*b) % 26; y[i] = (y[i] + 26) % 26;//+26取正 cout << char(y[i] + 'a'); } break; } system("pause"); }
Visual Studio 2015 编译测试结果:
相关文章推荐
- PHP 实现Affine 简单仿射密码 [信息安全]
- 密码技术应用设计实践-安全信息传输系统(SITS)(用Java实现DES、RSA、MD5算法)
- 使用ARP欺骗, 截取局域网中任意一台机器的网页请求,破解用户名密码等信息
- 暴力破解密码模拟程序,模拟暴力破译密码实现程序代码
- Android实现信息安全中维吉尼亚密码技术
- 信息安全——RSA密码系统的实现
- 信息安全——RSA密码系统的实现
- 用Java实现仿射密码,vigenere和Hill密码,内含用欧几里得算法实现一个数对于26的逆
- 逻辑复杂的业务代码如何实现有顺序的跳转展示(登录成功后要去摇奖,设置预留信息,修改密码,弹窗警告......等等)
- 仿射密码加解密及暴力破解c++实现
- 实现winrar密码破解的vbs代码
- 如何安全的存储用户密码?(下)代码实现pbkdf2算法加密
- java-信息安全(十三)-数字签名,代码签名【Java证书体系实现】
- 信息安全之程序实现简单替换加密,并用字母频率统计进行破解
- 信息安全之仿射密码加密和解密
- java-信息安全(十三)-数字签名,代码签名【Java证书体系实现】
- C#实现通过程序自动抓取远程Web网页信息的代码
- XHTML,CSS 秘密技术 定义列表代替实现页面的布局,表单提交 操作 附原代码。
- Windows Forms 实现安全的多线程详解(附带程序代码示例)
- 中国专家破解SHA-1,信息安全呼唤新算法