1 简介
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。 RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。 |
2 使用
2.1 初始化密钥对
2.2 获得字符串格式的密钥对 String publicKeyStr = Base64.encodeBase64String(publicKey.getEncoded()); String privateKeyStr = Base64.encodeBase64String(privateKey.getEncoded()); 2.3 加密步奏
2.4 解密步奏
2.5 加解密类了解 还原私钥,PKCS8EncodedKeySpec 用于构建私钥的规范 还原公钥,X509EncodedKeySpec 用于构建公钥的规范 2.6 设计辅助JAR org.apache.commons.codec.binary.Base64 //对二进制转字符串 |
3 总结使用场景
总结:公钥和私钥是成对的,它们互相解密。 公钥加密,私钥解密。 私钥数字签名,公钥验证
|
4 RSA原理
RSA算法 RSA 公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够 抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对 其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。 |