RSA Asymmetric Signature Encryption.
- 作者:刘路人,董文治
- 链接:https://www.zhihu.com/question/25912483/answer/289390742
- 链接:https://www.zhihu.com/question/25912483/answer/101734962
- 来源:知乎
取一对互质的数比如p, q;
p = 61;
q = 53;
n = p * q = 61 * 53 = 3233;
欧拉n = (p-1) * (q-1) = 60 * 52 = 3120;
求e;要求 1 < e < 欧拉n 且 e 和 欧拉n 互质; 数有很多,比如17
e = 17
求d;要求 e * d % 欧拉n = 1
转化公式 x * e + 欧拉n * y = 1 ; 17x + 3120y = 1 ; 算出x = 2753,y = -15
验证要求 7 * 2753 % 3120 = 1
d = 2753
钥匙A为: n和e
钥匙B为: n和d
用钥匙A加密 123
123 ** e % n = 123 ** 17 % 3233 = 855
用钥匙B解密 855
855 ** d % n = 855 ** 2753 % 3233 = 123
用钥匙B加密 99
99 ** d % n = 99 ** 2753 % 3233 = 89
用钥匙A解密 89
89 ** e % n = 89 ** 17 % 3233 = 99
-------------- 我是理解分割线 ----------------
p //随机质数
q //随机质数
N //p*q
r=φ(N)=(p-1)*(q-1)=N-p-q+1
e=65537 //随机整数,但是一般都用这个 AQAB(base64) 10001(16进制) 都是这个数
e*d=kr+1 //用扩展欧几里得算法,计算出d
(N,e)公钥
(N,d)私钥
公钥,私钥 里面的N是一样的,都是N=p*q,不同部分的 e和d ,关于模r 互为 模反元素,所以他俩谁都能加密,用另一个解密就行了;
但是为啥(N,e)用作公钥呢?因为我们懒啊,e一般都用这个65537,还有个毛秘密可言啊,这还加个毛密啊!!!
那就把你(N,e)发布出去,当做公钥咯;所以只能 用(N,d)作私钥。
不知道pq的情况下:
钥匙A 不能(很难) 算出 钥匙B
钥匙B 也不能(很难) 算出 钥匙A
! e和d 哪个标记为公钥,在性能和安全性上 貌似有差别,通常e被标记为公钥
! 大多数工具生成的私钥是包含pq的
俩谁都能加密,用另一个解密就行了;但是(N,e)的e不密,用作公钥,(N,d)作私钥。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。