当前位置: 首页 > 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);}

相关文章:

  • 区间动态规划
  • 深度学习之模型压缩三驾马车:基于ResNet18的模型剪枝实战(1)
  • 使用ArcPy进行栅格数据分析(2)
  • 【时时三省】(C语言基础)多维数组名作函数参数
  • 树莓派超全系列教程文档--(55)如何使用网络文件系统NFS
  • Symbol as Points: Panoptic Symbol Spotting via Point-based Representation
  • 【Redis】Redis 的常见客户端汇总
  • 《Sora模型中Transformer如何颠覆U-Net》
  • SpringBoot3项目架构设计与模块解析
  • 制作官网水平导航栏
  • Grafana-ECharts应用讲解(玫瑰图示例)
  • 计算机组成原理(计算篇)
  • minimatch 详解:功能、语法与应用场景
  • quickbi-突出显示指定行
  • STL——栈和队列和优先队列
  • 【计组】真题 2015 大题
  • SELinux是什么以及如何编写SELinux策略
  • 【YOLO 系列】基于YOLO的飞机表面缺陷智能检测系统【python源码+Pyqt5界面+数据集+训练代码】
  • USB-C/HDMI 2.0 2:1 SW,支持4K60HZ
  • Vue3实现拖拽改变元素大小
  • 湛江网页设计开发/昆明seo网站建设
  • 软件下载网站建设/优化设计七年级上册数学答案
  • 百度收录网站排名/新媒体营销六种方式
  • 网站开发新闻管理系统的背景/百度关键词点击
  • 独立网站怎样建设/成都抖音seo
  • 宏志建设有限公司网站/新泰网站设计