非对称加密算法
非对称加密算法又称为公开密钥加密算法,它需要两个密钥,一个称为公开密钥 (public key), 即公钥;另一 个称为私有密钥 (private key), 即私钥。公钥与私钥需要配对使用,如- 用公钥对数据进行加密,只有用对应的私钥才能进行解密,而如果使用私钥对数据进行加密,那么只有用对应的公钥才能进行解密。因为加密和解密使用的是两个不同的密钥,所以这种算法称为非对称加密算法。
非对称加密算法实现机密信息交换的基本过程是
甲方生成一 对密钥并将其中的一把作为公钥向其他人公开,得到该公钥的乙方使用该密钥对机密信息进行加密后再发送给甲方,甲方再使用自己保存的另一把专用密钥(即私钥)对加密后的信息进行解密。
非对称加密算法的特点:对称加密算法中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥,所以保证其安全性就是保证密钥的安全,而一旦密钥在传输过程中泄露,加密信息就不再安全。
非对称加密算法能够保证,即使是在获知公钥、加密算法和加密算法源代码的情况下,也尤法获得公钥对应的私钥,因此也无法对公钥加密的密文进行解密。
当前使用最为广泛的非对称加密算法非RSA莫属。
1.RSA算法
RSA非对称加密算法是在1977年由RonRivest、AdiShamirh和LenAdleman开发的,RSA取名来自他们三者的名字。RSA是目前最有影响力的非对称加密算法,它能够抵抗到目前为止(2016年)已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。RSA算法基于一个十分简单的数论巾实:将两个大素数相乘十分容易,但反过来想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。


首先初始化KeyPairGenerator, 并生成KeyPair, 得到KeyPair后,便可以通过getPublic与getPrivate分别取得公钥和私钥。为了方便保存(比如将相应的密钥存入数据库),可以使用Base64编码将其转换为String类型的打印字符。


转换之前,先对字符串进行Base64解码,公钥需要先转换成X509EncodedKeySpec对象,然后通过KeyFactory生成PublicKey对象,而私钥需要先转换成PKCS8EncodedKeySpec对象,丙通过KeyFactory生成PrivateKey对象。
待续。。
摘自:
《大型分布式网站架构设计与实践》 阅读笔记