All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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