非对称加密算法 RSA 与 ECC

RSA 属于公钥密码系统,反向使用公钥密码系统便提供了数字签名的功能,RSA 的安全性较高,但是随之而来的计算量也较大(例如指数运算),且会随着规模的增加而增大。

RSA 初始化阶段需要找到两个大素数,p 和 q;其乘积 n = p * q 被称作模。n 的欧拉数为
ϕ ( n ) = ( p 1 ) ( q 1 ) ,根据数论的知识,欧拉数表示那些比 n 小且与 n 互质(最大公约数为 1 )的正整数的个数。

RSA 的公钥指数 e 一般选取容易计数的值,即比特位为 1 的位数少(65537= 10000000000000001 2 ),其私钥指数则通过式 d = e 1 ( m o d ϕ ( n ) ) 计算获得。

RSA 公钥:公钥指数 e 与 模 n;
RSA 私钥:私钥指数 d 与 模 n;
加密:c = $m^e$ (mod n)
解密:m = $c^d$ (mod n)
注:m 为明文,c 为密文。

反向使用公钥算法如下:

签名:$ s = m^d (mod n)$
检验:$ m = s^e (mod n)$
注:m 为明文,s 为签名串。

因此需要一种更加高效的公钥密码系统,即椭圆曲线密码系统(Elliptic Curve Cryptography),在达到相同安全程度的前提下, ECC 所使用的密钥长度小于 RSA 的密钥长度,且 ECC 的计算过程更简单。

猜你喜欢

转载自blog.csdn.net/chuanglan/article/details/80631868