密码明文RSA加密

历史:

1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的"非对称加密算法"。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。

加密模式:

(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。

(2)甲方获取乙方的公钥,然后用它对信息加密。

(3)乙方得到加密后的信息,用私钥解密。

原理方面,可参考阮老师这篇文章

操作:

mac os下 直接通过openssl命令生成公钥私钥对

openssl genrsa -out rsa_1024_priv.pem 1024

openssl rsa -pubout -in rsa_1024_priv.pem -out rsa_1024_pub.pem

库的使用比较简单jsencrypt(githubt链接)

开发中的方案选择:

方案A是:公钥直接写死在前端,用公钥加密请求,服务端用私钥解密。方案B:每次向服务器请求公钥(每次会话一个公钥私钥对),前端公钥加密数据,服务端私钥解密。 虽然从安全性上来讲,方案B已定会更高,但个人觉得方案B是否会有点多余 。

RSA安全性

如果公钥加密的信息只有私钥解得开,那么只要私钥不泄漏,通信就是安全的。"对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法,那么RSA的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA密钥才可能被暴力破解。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要密钥长度足够长,用RSA加密的信息实际上是不能被解破的。