RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
RSA加密解密
加密解密是公钥加密私钥解密,持有公钥(多人持有)可以对数据加密,但是只有持有私钥(一人持有)才可以解密并查看数据;
RSA加签验签
加签验签是私钥加签公钥验签,持有私钥(一人持有)可以加签,持有公钥(多人持有)可以验签。
流程
作用
加密:数据传输的安全性
加签:数据的防篡改、防否认机制
对称加密算法
(1)甲方选择某一种加密规则,对信息进行加密; (2)乙方使用同一种规则,对信息进行解密 |
加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。
例子说明
email登录密码,比如微信、支付宝登录密码等等,这些都是对称密码的应用。DES、AES都属于对称加密。只要是同一把钥匙在开一个锁,都是对称密码。
非对称加密算法
(1)乙方生成两把密钥(公钥和私钥)。公钥是公开的,任何人都可以获得,私钥则是保密的。 (2)甲方获取乙方的公钥,然后用它对信息加密。 (3)乙方得到加密后的信息,用私钥解密。 |
例子说明
加签
(1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。 (2)A用自己的私钥对消息加签,形成签名,并将加签的消息和消息本身一起传递给B。 (3)B收到消息后,在获取A的公钥进行验签,如果验签出来的内容与消息本身一致,证明消息是A回复的 |
生成公钥私钥方法
支付宝提供的一键生成工具
OpenSSL工具命令生成
1.使用支付宝的工具
工具名:支付宝开发平台开发助手。下载地址:
https://ideservice.alipay.com/ide/getPluginUrl.htm?clientType=assistant&platform=win&channelType=WEB
下载后安装包长这样:
安装后,直接就能生成了
2.OpenSSL工具
下载openssl
https://slproweb.com/products/Win32OpenSSL.html
配置环境变量
验证
生成私钥
-- 生成 RSA 私钥(传统格式的)
openssl genrsa -out rsa_private_key.pem 1024
-- 将传统格式的私钥转换成 PKCS#8 格式的(JAVA需要使用的私钥需要经过PKCS#8编码,PHP程序不需要,可以直接略过)
openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM -nocrypt
生成公钥
-- 生成 RSA 公钥(php和java都用转换前私钥生成公钥)
openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
PS:我只是一名知识的搬运工,本文全部参考资料来自于百度。