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==
相关推荐
yaoxin5211233 小时前
390. Java IO API - WatchDir 示例
java·前端·python
Halo_tjn5 小时前
Java 基于字符串相关知识点
java·开发语言·算法
梦想的颜色5 小时前
java 利用redis来限制用户频繁点击
java·开发语言
PH = 76 小时前
OverlayFS联合文件系统使用示例
java·linux·服务器
AC赳赳老秦6 小时前
OpenClaw进阶技巧:批量修改文件内容、替换关键词,解放双手
java·linux·人工智能·python·算法·测试用例·openclaw
Java小白笔记7 小时前
OpenClaw 实战方法论
java·开发语言·人工智能·ai·全文检索·ai编程·ai写作
呱牛do it7 小时前
企业级门户网站设计与实现:基于SpringBoot + Vue3的全栈解决方案(Day 5)
java·vue
练习时长一年7 小时前
Spring配置类的演化
java·spring boot·spring
喜欢流萤吖~7 小时前
服务间的依赖管理:微服务的协作之道
java·微服务
invicinble7 小时前
Spring如何把bean注册到容器里
java·后端·spring