当前位置: 首页 > news >正文

使用Hutool工具进行rsa加密解密示例:

 使用自带的公钥和私钥进行加密解密

    public static void main(String[] args) {RSA rsa = new RSA();System.out.println("公钥:" + rsa.getPublicKeyBase64());System.out.println("私钥:" + rsa.getPrivateKeyBase64());String text = "Hello, Hutool RSA!";String encrypt = rsa.encryptBase64(text, KeyType.PublicKey);System.out.println("加密后:" + encrypt);String decrypt = rsa.decryptStr(encrypt, KeyType.PrivateKey);System.out.println("解密后:" + decrypt);}

 自定义公钥和私钥:这是完整的加密和解密过程

    public static void main(String[] args) throws Exception {// 生成一对RSA密钥KeyPair keyPair = generateRSAKeyPair();PublicKey publicKey = keyPair.getPublic();PrivateKey privateKey = keyPair.getPrivate();// 编码成Base64字符串String publicKeyStr = java.util.Base64.getEncoder().encodeToString(publicKey.getEncoded());String privateKeyStr = java.util.Base64.getEncoder().encodeToString(privateKey.getEncoded());System.out.println("公钥:" + publicKeyStr);System.out.println("私钥:" + privateKeyStr);// 使用Hutool的RSA类,传入私钥和公钥字符串RSA rsa = new RSA(privateKeyStr, publicKeyStr);String text = "Hello, custom key RSA!";String encrypt = rsa.encryptBase64(text, KeyType.PublicKey);System.out.println("加密后:" + encrypt);String decrypt = rsa.decryptStr(encrypt, KeyType.PrivateKey);System.out.println("解密后:" + decrypt);}// 生成RSA密钥对public static KeyPair generateRSAKeyPair() throws NoSuchAlgorithmException {KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");  // 注意这里是RSAkeyPairGenerator.initialize(2048);return keyPairGenerator.generateKeyPair();}

只加密/解密:我这里传入 Base64 编码的 DER 格式密钥(调用上面的密钥对生成方法);如果你直接

RSA rsa = new RSA(ncisConfig.getRsapublickey());这样的格式是要求传入PEM格式的密钥,否则允许会报错
   public static void main(String[] args) throws Exception {// 已编码成Base64字符串公钥和私钥String publicKeyStr = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAkpSuoj/csq4trVIjhtUKIesKOf5YLUyr9MEFJyVwO4EjiBSHwvxBYvryFrM3S8jZoBN/RH5r/RhhVLHspqNiXNTMBL6r8AV5/14ABxmL3MfI4xOeK/2e2S7FdLYtUI+IvnXj3BRh35wryqu3kALZFv+H05NfIDa17ZNhDxBmwBMZxvHV2oCOCzYHt1Kpv7J5MkCaWFBul5ma7076/g+T1M1YsuuycNhTywfoQqyQJ/fA2/I9zfL5TRJJ2EPpaOZMYEcjr0mRiEVd9jCagl2i32dBJDbYDaKqisZ7LU0GESxX4HQjFFYjR36i+O40x36+1aJthW2MMPQO0pEnebAK2QIDAQAB";//rsa生成的私钥String privateKeyStr = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCSlK6iP9yyri2tUiOG1Qoh6wo5/lgtTKv0wQUnJXA7gSOIFIfC/EFi+vIWszdLyNmgE39Efmv9GGFUseymo2Jc1MwEvqvwBXn/XgAHGYvcx8jjE54r/Z7ZLsV0ti1Qj4i+dePcFGHfnCvKq7eQAtkW/4fTk18gNrXtk2EPEGbAExnG8dXagI4LNge3Uqm/snkyQJpYUG6XmZrvTvr+D5PUzViy67Jw2FPLB+hCrJAn98Db8j3N8vlNEknYQ+lo5kxgRyOvSZGIRV32MJqCXaLfZ0EkNtgNoqqKxnstTQYRLFfgdCMUViNHfqL47jTHfr7Vom2FbYww9A7SkSd5sArZAgMBAAECggEABqgIbo2U3mspEtpZV6miZ9wbEkggRZDArE3JoWrChOLX5x/7jEy7qwMduqjEmMUg5Az1AuDBoA3ORoDWVmwYyIHQ8MdrdAWW2GEytVMHj9NljLGBRZq8u6MZzDOFRxSSXDsEfNcftkskWydFUwP2F/4rP/d//EZpW5KnETHCLY2yGh5vnBmVnHoCLVngiHQ1WOtZLOdRHqI9nH6PtpNJEYv6IclovqsQ/4qdj9ADmmUgUWypwxF6IaB6/R0h7WrteYHZ3jdrlMd7fSsqkXGHK4zrEOPm2p9VOCwZupM3VYWHtCP58Se0I5q4Co/rRs2b54YcOtoqHFuBTpPFqCcfaQKBgQC9t3C2OfCk/JkBUSbylGD30USVryY+WjiVJs1bwGZqGn7Au1vtUdP04PaZeZhgWxHHgEeFhTyD168cA4fy9/i8TQghnXPQvVU+aQIuerZSn4+KQX7ob9Xo6ZUKVqI8utsJAwfSlNy6MCcpMpWr/A3C6lwfNtDxf2ZsCT1LBeceVQKBgQDFyxuTe4pNDpyXHJgpGSObEfoKTJVonKyAAz4AjPG7rm65MMcTx02Mt/O1Xm0r7/cxoIj1bpVXeNyO/VDkSXDRuu24/bUm+Wq+2oQTf6rFL1hjYvmbfyk/o0yCv+21SqXhH/o4if+/DIP8hB+fALbC/2kLT3a7xA3z8k8D7sR2dQKBgCzl+wDFWZRSS4uqPwNt5j0AA7FBEFX1WCrEUhmCwTofJxxJuwnBMd5kVzgfNNao9t42F7cbvyScqM6Cb2wrD2zQ9jmuX7ho9oGcrG1/kSKgrIHV2kj8Hq3Oif02X5LrzeamFvXZURunRb1UQWPAdSlJ+Z9Rg8WDlyO+VAkrTnU5AoGADvzS/BvyYOBokTLDfOnAvvFfxwQClki48YJNYnFLp/MRxMqjayZBBBa0Stv63cdzLbmCZ0aX3mb0H4mmZYYDHIFTnh7raSahJhEczPVxlTt/MRjA3T2HfKD9HTM56fDcHPD1Xu9mB64FGk9QrhW5w5Di/s5oqtWyUPfdcOjYzjkCgYA+IbGJ7f0zyhVeLmehLdzhle+rNkEXPMs40iVn8CRzDy1/wNlgR3+un5SdJzuCHMF4FCDdgady6WAoz47daCrcMBHkV5JNaxU6e2ZA4gELSgpBJwDHIY+H2Y7gkyamhANGvzUObOGlTwjw2mATi2GIauiFcpMHUNmgaOnZBVL7OA==";//加密后的苏剧String encryptData = "gRKwhY/hRtVarhV0wzDbpG78QzncPqt8yzq60J9EUVWPgso6Ul+7ao/OWSDR8KheRaa2rUqLppVVDJMg9Ywq268QVgocdgvBFF33wdYZk/HzF1WPHFV1esXGXzU+2I3QHw/JUFmvxov/7vBLMVnWMyGjUvO1StHk+56HjJz1iXDK4g3m+oN9xEC7nwvyJ5r/RWBQG+FmtPpuIioPxRAOuOpBwNHK9pXHLRzeNoLThR1c1wOQWuMpVgFtWmd255bQo5avJZ76nynCU1WjuEfeEL1vEStpUoB7IBvt5UO3CtW6K4NcRyvyE0f3BrcVp1rQ5XOq5vxBkERghJQIcwN77w==";//需要加密的数据String decryptData = "Hello, custom key RSA!";System.out.println("原始加密数据"+"gRKwhY/hRtVarhV0wzDbpG78QzncPqt8yzq60J9EUVWPgso6Ul+7ao/OWSDR8KheRaa2rUqLppVVDJMg9Ywq268QVgocdgvBFF33wdYZk/HzF1WPHFV1esXGXzU+2I3QHw/JUFmvxov/7vBLMVnWMyGjUvO1StHk+56HjJz1iXDK4g3m+oN9xEC7nwvyJ5r/RWBQG+FmtPpuIioPxRAOuOpBwNHK9pXHLRzeNoLThR1c1wOQWuMpVgFtWmd255bQo5avJZ76nynCU1WjuEfeEL1vEStpUoB7IBvt5UO3CtW6K4NcRyvyE0f3BrcVp1rQ5XOq5vxBkERghJQIcwN77w==");System.out.println("原始公钥:" + publicKeyStr);System.out.println("原始私钥:" + privateKeyStr);System.out.println("原始明文:" + decryptData);System.out.println("原始加密后:" + encryptData);//---------------------------------------------------// 使用Hutool的RSA类,加密RSA rsa = new RSA(null,publicKeyStr);String encrypt = rsa.encryptBase64(decryptData, KeyType.PublicKey);System.out.println("加密后:" + encrypt);// 使用Hutool的RSA类,解密RSA rsa1 = new RSA(privateKeyStr,null);String decrypt = rsa1.decryptStr(encrypt, KeyType.PrivateKey);System.out.println("解密后:" + decrypt);}

http://www.lqws.cn/news/161659.html

相关文章:

  • JVM垃圾回收器-ZGC
  • GC1809:高性能音频接收与转换芯片
  • NineData云原生智能数据管理平台新功能发布|2025年5月版
  • SpringCloud——Nacos
  • SDC命令详解:使用set_fanout_load命令进行约束
  • 可穿戴设备:健康监测的未来之眼
  • clickhouse常用语句汇总——持续更新中
  • 牛客小白月赛113
  • Git的由来与应用详解:从Linux内核到现代开发的革命性工具
  • windows server2019 不成功的部署docker经历
  • [特殊字符] 一文了解目前主流的 Cursor AI 免费续杯工具!
  • AI时代的弯道超车之第二十四章:AI伦理和版权问题
  • 智慧园区数字孪生全链交付方案:降本增效30%,多案例实践驱动全周期交付
  • STM32入门教程——OLED调试工具
  • Elasticsearch最新入门教程
  • vue3 eslint ts 关闭多单词命名检查
  • AirSim/Cosys-AirSim 游戏开发(二)使用自定义场景
  • 大模型学习
  • adb 连不上真机设备问题汇总
  • uniapp微信小程序视频实时流+pc端预览方案
  • 音视频之视频压缩编码的基本原理
  • Rust Floem UI 框架使用简介
  • 从《现实不似你所见》探寻与缘起性空的思想交织
  • OPenCV CUDA模块目标检测----- HOG 特征提取和目标检测类cv::cuda::HOG
  • 基于STM32设计的水资源监测系统
  • 前缀和题目:逐步求和得到正数的最小值
  • PySpark性能调优手册:大数据处理中的避坑与实践
  • 最小硬件系统概念及其组成
  • 数据质量是什么意思?怎样做好数据质量监控?
  • ROS2 节点类中要避免While true 循环