RSA算法
RSA算法描述
第1步:用两个很大的互异的质数p和q(p和q必须保密),计算它们的乘积n=pq;n是模数。
第2步:选择一个比n小的数e,它与(p-1)(q-1)互为质数,即除了1以外,e和(p-1)(q-1)没有其他的公子。
第3步:找到另一个数d,使(ed-1)能被(p-1)(q-1)整除。即ed=1 mod (p-1)(q-1)
第4步:取公开密钥为(e,n)这一对数;私有密钥为(d,n)这一对数。
第5步:加密过程为c=m^e(mod n)(m为明文,c为密文)第6步:解密过程为m=c^d(mod n)
RSA算法实例
例:采用RSA算法,其中e=7,p=11,q=13,求出公钥和私钥,并求出明文85进行加密后的密文。
解:第一步:首先求出模数n=p*q=11*13=143
第二步:求出(p-1)*(q-1)=(11-1)*(13-1)120,e已知为7,就不用求了
第三步:找出d满足e*d=1 mod (p-1)*(q-1),既7d=1mod120(等同于7d-1=120k(k=1,2,3……))这里求得d=103
第四步:取公钥:(e,n)即(7,143)私钥(d,n)即(103,143)
第五步:计算出密文c=m^e mod n=85^7mod143=123
(85^7mod143是85^7除143求余数)
例:采用RSA算法,其中p=5,q=7,d=29。求公开密钥和私有密钥
解:第一步:首先求出模数n=p*q=5*7=35
第二步:求出(p-1)*(q-1)=(5-1)(7-1)=24
第三步:求e,由e*d=1 mod (p-1)*(q-1),得29d=1mod24,(29e-1=24K(k为正整数))这里求得e=5
第四步:取公钥:(e,n)即(5,35)私钥(d,n)即(29,35)
维吉尼亚密码
算法描述
维吉尼亚密码是在凯撒密码基础上产生的一种加密方法,它将凯撒密码的全部25种位移排序为一张表,与原字母序列共同组成26行及26列的字母表。维吉尼亚密码加密方法示例如下:对密钥字符,规定密钥子母a、 b、c、 d..... .y、z对应的数字n为0、1、2、3......24、25。
每个明文字符首先找到对应的密钥字符,然后根据英文字母表按照密钥字符对应的数字n向后顺序推后n个字母即可得到明文字符对应的密文字符。
字符 | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | y | z |
n | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 18 | 20 | 21 | 22 | 23 | 24 | 25 |
例:使用维吉尼亚密码进行加密,明文为welcomeeverybody,给出密钥字为bestwish,推算出该明文对应的密文。
解
对明文中第一个字母w,对应的密钥字符为b,b的对应需要向后推1个字母,所以是w->x;-因此其对应的密文字符为x,接下来的字符都用这种方式计算即得要求的密文
组数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 明文 w e l c o m e e v e r y b o d y 密钥 b e s t w i s h b e s t w i s h 密文 x i d v k u w l w i j r x w v f
对于这个还有一种傻瓜办法,就是分别把明文和密钥对应的密钥字符列出来相加,再找到对应的字符就为要求的密文就拿上面的例子来说
明文 w e l c o m e e v e r y …… 对应数字 22 4 11 2 14 12 4 4 21 4 17 24 …… 密钥 b e s t w i s h b e s t …… 对应数字 1 4 18 19 22 8 18 7 1 4 18 19 …… 相加 23 8 29 21 36 20 22 11 22 8 35 43 …… 对应字符 x i d v k u w l w i j r …… 最后求得的对应字符即要求的密文
注意:当两数相加大于25时用相加数字减去26后再找对应