
com.github.kaizen4j.algorithm.encrypt.Rsa Maven / Gradle / Ivy
package com.github.kaizen4j.algorithm.encrypt;
import java.nio.charset.StandardCharsets;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import org.apache.commons.codec.binary.Base64;
/**
* RSA 加密算法类
*/
public final class Rsa {
private static final String RSA_DECRYPTION = "RSA";
private static final int DEFAULT_KEY_SIZE = 2048;
private String publicKey;
private String privateKey;
/**
* RSA 构造函数
*
* @param seed 种子
* @param keySize key 长度
*/
public Rsa(String seed, int keySize) {
try {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA_DECRYPTION);
SecureRandom secureRandom = new SecureRandom();
secureRandom.setSeed(seed.getBytes(StandardCharsets.UTF_8));
keyPairGenerator.initialize(keySize, secureRandom);
KeyPair keyPair = keyPairGenerator.genKeyPair();
this.publicKey = Base64.encodeBase64String(keyPair.getPublic().getEncoded());
this.privateKey = Base64.encodeBase64String(keyPair.getPrivate().getEncoded());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
/**
* RSA 构造函数
*
* @param keySize key 长度
*/
public Rsa(int keySize) {
try {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA_DECRYPTION);
keyPairGenerator.initialize(keySize);
KeyPair keyPair = keyPairGenerator.genKeyPair();
this.publicKey = Base64.encodeBase64String(keyPair.getPublic().getEncoded());
this.privateKey = Base64.encodeBase64String(keyPair.getPrivate().getEncoded());
} catch (NoSuchAlgorithmException e) {
throw new RuntimeException(e);
}
}
/**
* RSA 构造函数
*
* @param seed 种子
*/
public Rsa(String seed) {
this(seed, DEFAULT_KEY_SIZE);
}
/**
* 获取公钥
*
* @return 公钥字符串
*/
public String getPublicKey() {
return publicKey;
}
/**
* 获取私钥
*
* @return 私钥字符串
*/
public String getPrivateKey() {
return privateKey;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy