编码工具BASE64 maven包
<!-- https://mvnrepository.com/artifact/commons-codec/commons-codec -->
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
使用场景
双方通讯,为保证传输内容的安全。传输过程需要是密文。同时要求对方接收到密文后能够解密(可逆)
下面是RSA通讯流程图(网上找的)。
1、用户A和用户B交换公钥
2、用户A发送给用户B的密文是用用户B的公钥加密得到的
3、用户B获取到用户A发过来的密文后,用自己的私钥(私钥B)去解密
4、用户B发送给用户A的密文也是如此。(用A的公钥加密)
生成密钥对
/**
* RSA算法定义
*/
public static final String KEY_ALGORITHM = "RSA";
/**
* 生成密钥对
*
* @return 长度为2的String数组,分别为BASE64编码的公钥和密钥
* @throws Exception
*/
public static String[] generateKeyPair(int KEY_SIZE) throws Exception {
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
keyPairGen.initialize(KEY_SIZE);
KeyPair keyPair = keyPairGen.generateKeyPair();
String publicKey = BASE64Tools.encrypt(keyPair.getPublic().getEncoded());
String privateKey = BASE64Tools.encrypt(keyPair.getPrivate().getEncoded());
return new String[] {
publicKey, privateKey };
}
public static void main(String[] args) throws Exception {
String[] keyPair = generateKeyPair(1024);
System.out.println("公钥=" + keyPair[0]);
System.out.println(