RSA共模攻击
RSA基本原理
① 选择两个大的质数p和q,N=pq;
② 根据欧拉函数,求得r=(p-1)(q-1);
③ 选一个小于r的整数e,求得e关于模r的模反元素d;
④ 将p和q的记录销毁;
⑤ 公钥为(N,e),私钥为(N,d)
加密:
将消息转换为小于N的整数n,
通过n^e≡c(mod N)
得到密文c
解密:
通过c^d≡n(mod N)
将密文c变为原文n
共模攻击原理:
当N相同时,找到两个互质的e,在已知N、c1、c2、e1、e2的情况下,
c1=m^e1%N
c2=m^e2%N
可通过公式e1s1+e2s2=1,解得s1和s2两个整数
最终得到c1^s1*c2^s2=m
凯撒密码
加密:
En(x)=(x+n) mod 26
解密:
Dn(x)=(x-n) mod 26
其中偏移量n为大于等于1小于26的整数
原理:明文中的所有字母按照偏移量n偏移后被替换为密文。
维吉尼亚密码
——古典密码中需要密钥的密码
加密:
Ci≡Pi+Ki(mod 26)
解密:
Pi≡Ci-Ki(mod 26)
其中K为密钥
维吉尼亚密码表:
猪圈密码
两种加解密方式
一:图形和字母变换
例:
二:左右一一对应变换
Python脚本实现:
import sys def pigpen_chiper(letter): a = "abcdefghistuv" b = "jklmnopqrwxyz" if letter.isalpha(): if letter in a: n = a.find(letter) pig = b[n] else: n = b.find(letter) pig = a[n] return pig else: return letter def pigpen(word): """ pigpen chiper """ res = '' for letter in word: res += pigpen_chiper(letter) return res if __name__ == '__main__': if len(sys.argv) != 2: print "Pigpen_chiper decode 猪圈密码解密器v1.0 BY 0h1in9e" print "Usage: "+sys.argv[0]+" 'ocjp{zkii}'" else: print pigpen(sys.argv[1])
AAencode
扩展:ppencode/rrencode/jjencode
参考URL:https://www.cnblogs.com/android-html5/archive/2011/02/09/2533784.html
Rabbit密码
一种流密码
在线加解密URL:http://www.sojson.com/encrypt_rabbit.html
栅栏密码
原理:①将要传递的信息交替排成上下两行;②将下面一行字母排在上面一行后边形成密文。
例: