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

com.ms.security.encryption.rsa.RSA Maven / Gradle / Ivy

The newest version!
/*
 * @MS 2022-12-13
 * Copyright (c) 2001-2023 萌森
 * 保留所有权利
 * 本软件为萌森工作室所有及包含机密信息,须遵守其相关许可证条款进行使用。
 * Copyright (c) 2001-2023 Meng Sen
 * All rights reserved
 * This software is owned by Mengsen Studio and contains confidential information, and must be used in accordance with its relevant license terms.
 * Website:https://qyg2297248353.top
 */

package com.ms.security.encryption.rsa;


import com.ms.core.exception.base.MsToolsException;
import com.ms.security.encryption.key.GenerateKeyPair;
import com.ms.security.encryption.key.RsaKey;
import com.ms.security.encryption.rsa.factory.RsaFactory;

import java.io.File;
import java.security.PrivateKey;
import java.security.PublicKey;

/**
 * RSA
 *
 * @author qyg2297248353
 */
public class RSA {

    /**
     * RSA公钥加密
     * 默认密钥
     *
     * @param encodeStr 需要加密的字符串
     * @return 密文
     */
    public static String encodePub(String encodeStr) throws MsToolsException {
        return encodePub(encodeStr.getBytes());
    }

    /**
     * RSA公钥加密
     * 默认密钥
     *
     * @param encodeStr 需要加密的字节数组
     * @return 密文
     */
    public static String encodePub(byte[] encodeStr) throws MsToolsException {
        return encodePub(encodeStr, RsaKey.getRsaKey().getPublicKeyStr());
    }

    /**
     * RSA公钥加密
     *
     * @param encodeStr 需要加密的字符串
     * @param publicKey 公钥
     * @return 密文
     */
    public static String encodePub(String encodeStr, String publicKey) throws MsToolsException {
        return encodePub(encodeStr.getBytes(), publicKey);
    }

    /**
     * RSA公钥加密
     *
     * @param encodeStr 需要加密的字节数组
     * @param publicKey 公钥
     * @return 密文
     */
    public static String encodePub(byte[] encodeStr, String publicKey) throws MsToolsException {
        return RsaFactory.encodePub(encodeStr, publicKey);
    }


    /**
     * RSA私钥加密
     * 默认密钥
     *
     * @param decodeStr 密文
     * @return 明文
     */
    public static String encodePri(String decodeStr) throws MsToolsException {
        return encodePri(decodeStr.getBytes());
    }

    /**
     * RSA私钥加密
     * 默认密钥
     *
     * @param decodeStr 密文字节数组
     * @return 明文
     */
    public static String encodePri(byte[] decodeStr) throws MsToolsException {
        // 密文base64解密
        return encodePri(decodeStr, RsaKey.getRsaKey().getPrivateStr());
    }

    /**
     * RSA私钥加密
     *
     * @param decodeStr  密文
     * @param privateKey 私钥
     * @return 明文
     */
    public static String encodePri(String decodeStr, String privateKey) throws MsToolsException {
        return encodePri(decodeStr.getBytes(), privateKey);
    }

    /**
     * RSA私钥加密
     *
     * @param decodeStr  密文字节数组
     * @param privateKey 私钥
     * @return 明文
     */
    public static String encodePri(byte[] decodeStr, String privateKey) throws MsToolsException {
        return RsaFactory.encodePri(decodeStr, privateKey);
    }


    /**
     * RSA私钥解密
     * 默认密钥
     *
     * @param decodeStr 密文
     * @return 明文
     */
    public static String decodePri(String decodeStr) throws MsToolsException {
        return decodePri(decodeStr.getBytes());
    }

    /**
     * RSA私钥解密
     * 默认密钥
     *
     * @param decodeStr 密文字节数组
     * @return 明文
     */
    public static String decodePri(byte[] decodeStr) throws MsToolsException {
        // 密文base64解密
        return decodePri(decodeStr, RsaKey.getRsaKey().getPrivateStr());
    }

    /**
     * RSA私钥解密
     *
     * @param decodeStr  密文
     * @param privateKey 私钥
     * @return 明文
     */
    public static String decodePri(String decodeStr, String privateKey) throws MsToolsException {
        return decodePri(decodeStr.getBytes(), privateKey);
    }

    /**
     * RSA私钥解密
     *
     * @param decodeStr  密文字节数组
     * @param privateKey 私钥
     * @return 明文
     */
    public static String decodePri(byte[] decodeStr, String privateKey) throws MsToolsException {
        return RsaFactory.decodePri(decodeStr, privateKey);
    }


    /**
     * RSA公钥解密
     * 默认密钥
     *
     * @param encodeStr 需要加密的字符串
     * @return 密文
     */
    public static String decodePub(String encodeStr) throws MsToolsException {
        return decodePub(encodeStr.getBytes());
    }

    /**
     * RSA公钥解密
     * 默认密钥
     *
     * @param encodeStr 需要加密的字节数组
     * @return 密文
     * @throws MsToolsException 异常
     */
    public static String decodePub(byte[] encodeStr) throws MsToolsException {
        return decodePub(encodeStr, RsaKey.getRsaKey().getPublicKeyStr());
    }

    /**
     * RSA公钥解密
     *
     * @param encodeStr 需要加密的字符串
     * @param publicKey 公钥
     * @return 密文
     * @throws MsToolsException 异常
     */
    public static String decodePub(String encodeStr, String publicKey) throws MsToolsException {
        return decodePub(encodeStr.getBytes(), publicKey);
    }

    /**
     * RSA公钥解密
     *
     * @param encodeStr 需要加密的字节数组
     * @param publicKey 公钥
     * @return 密文
     * @throws MsToolsException 异常
     */
    public static String decodePub(byte[] encodeStr, String publicKey) throws MsToolsException {
        return RsaFactory.decodePub(encodeStr, publicKey);
    }


    /**
     * 生成密钥对
     * 2048默认密钥位数
     *
     * @return 密钥对
     */
    public static GenerateKeyPair generateKey() {
        return RsaFactory.generateKey();
    }

    /**
     * 生成密钥对
     *
     * @return 密钥对
     * @throws MsToolsException 异常
     */
    public static GenerateKeyPair generateKey1024() throws MsToolsException {
        return RsaFactory.generateKey(1024);
    }

    /**
     * RSA私钥签名
     *
     * @param data       待签名数据
     * @param privateKey 私钥
     * @return 签名
     * @throws MsToolsException 签名异常
     */
    public static String sign(String data, String privateKey) throws MsToolsException {
        return RsaFactory.sign(data, privateKey);
    }

    /**
     * RSA公钥验签
     *
     * @param source    原始字符串
     * @param publicKey 公钥
     * @param sign      签名字符串
     * @return 是否验签通过
     * @throws MsToolsException 验证异常
     */
    public static boolean verify(String source, String publicKey, String sign) throws MsToolsException {
        return RsaFactory.verify(source, publicKey, sign);
    }

    /**
     * 获取密钥
     * 密钥单例维护,每次部署全局唯一 重启服务更换密钥
     *
     * @return 密钥
     */
    public static String getPublicKey() {
        return RsaKey.getRsaKey().getPublicKeyStr();
    }

    /**
     * 获取密钥
     * 密钥单例维护,每次部署全局唯一 重启服务更换密钥
     *
     * @return 密钥
     */
    public static String getPrivateKey() {
        return RsaKey.getRsaKey().getPrivateStr();
    }

    /**
     * 获取密钥信息
     *
     * @return 密钥信息
     */
    public static GenerateKeyPair getKeyPair() {
        return RsaKey.getRsaKey().getGenerateKeyPair();
    }

    /**
     * 加载密钥信息
     *
     * @param privateKey 私钥
     * @return 密钥-私钥
     * @throws MsToolsException 读取异常
     */
    public PrivateKey loadPrivateKey(String privateKey) throws MsToolsException {
        return RsaFactory.loadPrivateKeyFromString(privateKey);
    }

    /**
     * 加载密钥信息
     *
     * @param publicKey 公钥
     * @return 密钥-公钥
     * @throws MsToolsException 读取异常
     */
    public PublicKey loadPublicKey(String publicKey) throws MsToolsException {
        return RsaFactory.loadPublicKeyFromString(publicKey);
    }

    /**
     * 加载密钥信息
     *
     * @param privateKey 私钥文件
     * @return 密钥-私钥
     * @throws MsToolsException 读取异常
     */
    public PrivateKey loadPrivateKey(File privateKey) throws MsToolsException {
        return RsaFactory.loadPrivateKeyFromFile(privateKey);
    }

    /**
     * 加载密钥信息
     *
     * @param publicKey 公钥文件
     * @return 密钥-公钥
     * @throws MsToolsException 读取异常
     */
    public PublicKey loadPublicKey(File publicKey) throws MsToolsException {
        return RsaFactory.loadPublicKeyFromFile(publicKey);
    }

    /**
     * 加载密钥信息
     *
     * @param privateKey 私钥
     * @param publicKey  公钥
     * @return 密钥对
     * @throws MsToolsException 工具
     */
    public GenerateKeyPair loadKeyPair(String privateKey, String publicKey) throws MsToolsException {
        return RsaFactory.loadKeyPairFromString(privateKey, publicKey);
    }

    /**
     * 获取密钥加密长度
     * 默认加密长度2048
     * -1表示读取密钥失败
     *
     * @param publicKey 密钥
     * @return 密钥长度
     */
    public Integer getPublicKeyLength(String publicKey) {
        return RsaFactory.publicKeyLength(publicKey);
    }

    /**
     * 获取密钥加密长度
     * 默认加密长度2048
     * -1表示读取密钥失败
     *
     * @param publicKey 密钥
     * @return 密钥长度
     */
    public Integer getKeyLength(PublicKey publicKey) {
        return RsaFactory.publicKeyLength(publicKey);
    }

    /**
     * 获取密钥加密长度
     * 默认加密长度2048
     * -1表示读取密钥失败
     *
     * @param privateKey 密钥
     * @return 密钥长度
     */
    public Integer getPrivateKeyLength(String privateKey) {
        return RsaFactory.privateKeyLength(privateKey);
    }

    /**
     * 获取密钥加密长度
     * 默认加密长度2048
     * -1表示读取密钥失败
     *
     * @param privateKey 密钥
     * @return 密钥长度
     */
    public Integer getKeyLength(PrivateKey privateKey) {
        return RsaFactory.privateKeyLength(privateKey);
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy