RSA加密算法
-
简介
- RSA是一种非对称的加密算法,因为RSA加密解密用的是不同的密钥。
- 目前公认的最好的加密和公钥方案之一
- 公钥加密,私钥解密。可以将公钥公开出去,任何人都可以通过公钥进行加密,只有持有私钥的人才能正确解密。
- 用于数字签名,私钥持有者对信息进行签名
- 可以进行加密和数字签名
- 国内大型互联网公司也都在用
- 加密解密算法python用的比较少,因为pyhon效率很低,一般加密解密的算法处理的数据量较大。
- 密钥(公钥、私钥)问开发要
-
原理
如下图所示,字符串明文通过公钥加密成密文,将密文提交到服务器,服务器拿出之前保存好的私钥进行解密,解密成明文。也就说服务器最后处理的时候,要把数据已经解析成明文。服务器在最终的时候不会处理密文,密文只是保证传输的时候安全。比如密码是123456,服务器最后处理的时候还是123456。
-
代码实现
package com.qian.encoded; import org.apache.commons.codec.binary.Base64; import javax.crypto.Cipher; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.interfaces.RSAPrivateKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec; import java.util.HashMap; import java.util.Map; public class RSAEncrypt { private static Map<Integer, String> keyMap = new HashMap<Integer, String>(); //用于封装随机产生的公