Java 根据公钥对明文进行RSA加密

示例代码:

java 复制代码
import javax.crypto.Cipher;
import java.security.PublicKey;
import java.security.KeyFactory;
import java.security.spec.X509EncodedKeySpec;
import org.apache.commons.codec.binary.Base64;

public class RSAUtil {
    /**
     * RSA加密
     * @param publicKeyStr 公钥字符串
     * @param plainText 明文字符串
     * @return 加密后的字符串
     * @throws Exception
     */
    public static String encryptByPublicKey(String publicKeyStr, String plainText) throws Exception {
        // 将公钥字符串转换为公钥对象
        byte[] publicKeyBytes = Base64.decodeBase64(publicKeyStr);
        X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(publicKeyBytes);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey = keyFactory.generatePublic(x509KeySpec);

        // 对明文进行加密
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] plainTextBytes = plainText.getBytes("UTF-8");
        byte[] encryptedBytes = cipher.doFinal(plainTextBytes);

        // 将加密后的字节数组转换为字符串
        return Base64.encodeBase64String(encryptedBytes);
    }
}

// 使用示例:
String publicKeyStr = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQzJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJwIDAQAB";
String plainText = "Hello, world!";
String encryptedText = RSAUtil.encryptByPublicKey(publicKeyStr, plainText);
System.out.println(encryptedText); // 输出:LJ5zJzJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJwJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJzvJZzjJw==
相关推荐
Jabes.yang33 分钟前
Java求职面试: 互联网医疗场景中的缓存技术与监控运维应用
java·redis·spring security·grafana·prometheus·oauth2·互联网医疗
初级炼丹师(爱说实话版)1 小时前
内存泄漏与内存溢出
java
CryptoRzz1 小时前
越南k线历史数据、IPO新股股票数据接口文档
java·数据库·后端·python·区块链
学Java的bb1 小时前
MybatisPlus
java·开发语言·数据库
讓丄帝愛伱1 小时前
Mybatis Log Free插件使用
java·开发语言·mybatis
重生之我要当java大帝1 小时前
java微服务-尚医通-编写医院设置接口上
java·数据库·微服务
夫唯不争,故无尤也1 小时前
Tomcat 内嵌启动时找不到 Web 应用的路径
java·前端·tomcat
心之伊始1 小时前
Netty线程模型与Tomcat线程模型对比分析
java·开发语言
gaoshan123456789101 小时前
‌MyBatis-Plus 的 LambdaQueryWrapper 可以实现 OR 条件查询‌
java·tomcat·mybatis
Mu.3871 小时前
初始Spring
java·数据库·spring