赞
踩
欧拉函数 φ(n) 的定义是小于等于 n 的正整数中与 n 互素的数的个数。简单说,就是找到与给定正整数 n 互素的数有多少个。
RSA公钥 Kpub(n,e) ,私钥 Kpr=d。生成秘钥过程可以分为六步:
①选择长度相等的p,q两个质数;
②计算n=p·q (n的长度至少为1024bit)
③计算 (n) =(p-1)·(q-1) (小费马定理)
④随机选择e:0<e< (n),且e和 (n) 的最大公约数为1
⑤计算秘钥d,d是e的逆,即:d=e^-1mod (n) ,且e和d满足 e*d=1mod(n)
⑥计算出e和d后生成了公钥和秘钥对:
Kpub(n,e) =(n,e)
Kpr=(p,q,d)
RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:
得到密钥对(Kpub,Kpri)后 Alice 和Bob 双方利用秘钥对进行加密解密
加密:Enc(Kpub)=x^e mod n
解密:Dec(Kpri)=y^d mod n
数字签名是一种公钥加密算法,对数字信息进行鉴别的方法,分为数字签名和验证;
x=4,通信过程如下:
消息x=4
5.1、过程:
ed ≡ 1 (mod φ(n))
ed - 1 = kφ(n)
找到模反元素d,实质上就是对下面这个二元一次方程求解
ed - φ(n)k = 1
已知 e=3, φ(n)=20,
3d - 20k = 1
这个方程可以用"扩展欧几里得算法"求解,此处省略具体过程。总之算出一组整数解为 (d,k)=(7,1),即 d=7。
(a)、3d - 20k = 1
(b)、将20对3取模得到的余数2代替20,则变为3d-2k=1;
(c)、同理,将3对2取模得到余数1代替3,则变为d-2k=1
当x的系数最后化为1时,
令k=0代入 (c),得d=1;
令d=1代入(b), 得k=1;
令k=1代入(a),得d=7
此时即可得到公钥PK=(e,n)={3,33},私钥SK={d,n}={7,33},后面的加密和解密直接套相应公式即可。
例如:79*d-3220*k=1
(a)79*d-3220*k=1(其中k为正整数);
(b)将3220对79取模得到的余数60代替3220,则变为79*d-60*k=1;
(c)同理,将79对60取模得到的余数19代替79,则变为19*d-60*k=1;
(d)同理,将60对19取模得到的余数3代替60,则变为19*d-3*k=1;
(e)同理,将19对3取模得到的余数1代替19,则变为d-3*k=1;
当d的系数最后化为1时,
令k=0,代入(e)式中,得d=1;
将d=1代入(d)式,得k=6;
将k=6代入(c)式,得d=19;
将d=19代入(b)式,得k=25;
将k=25代入(a)式,得d=1019,这个值即我们要求的私钥d的最终值。
此时即可得到公钥PK=(e,n)={79,3337},私钥SK={1019,3337},后面的加密和解密直接套相应公式即可。
Alice
假如明文 x=4
密文 y =x^e=4^3 mod 33=31;
Bob
收到密文31,然后解密 x= y^d=31^7 mod 33=4 得到明文 x=4
消息 x=4
生成签名 s=x^d= 4^7 mod 33 =16
收到签名(x,s)=(4,16), s=16
x撇=s^e=16^3 mod 33 =4
x撇=x mod 33= 4
有效签名
将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值,即:
则得到分组后的key的明文信息为:11,05,25。
用户加密密钥(3,33) 将数字化明文分组信息加密成密文。由C≡Me(mod n)得:
因此,得到相应的密文信息为:11,31,16。
用户B收到密文,若将其解密,只需要计算,即:
用户B得到明文信息为:11,05,25。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。
它的原理就可以这么简单地解释!
当然,实际运用要比这复杂得多,由于RSA算法的公钥私钥的长度(模长度)要到1024位甚至2048位才能保证安全,因此,p、q、e的选取、公钥私钥的生成,加密解密模指数运算都有一定的计算程序,需要仰仗计算机高速完成。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。