news 2026/10/14 2:37:15

Java 企业级工具类全家桶-83-RSA非对称加解密与签名工具类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java 企业级工具类全家桶-83-RSA非对称加解密与签名工具类

📋 目录

  • 一、工具类功能
  • 二、所需环境
  • 三、方法与调用示例(按需调用)
  • 四、工具类源码(可直接复制)

一、工具类功能

公钥加密私钥解密、私钥签名公钥验签,加密固定 RSA-OAEP(SHA-256,与 openssl 互通),超过单块上限的长数据走数字信封一次搞定,不用自己拼分段与会话密钥。

二、所需环境

JDK 17或以上

三、方法与调用示例(按需调用)

🔢方法序号:1

🎯方法用途:

🧩方法定义:public static KeyPairVo generateKeyPair()

🗣️入参解释:public static KeyPairVo generateKeyPair()

📤返回值解释:KeyPairVo,public record KeyPairVo(String publicKeyBase64, String privateKeyBase64),公钥是 X.509 编码、私钥是 PKCS#8 编码

💡边界口径:

🧪方法示例:


🔢方法序号:2

🎯方法用途:

🧩方法定义:public static KeyPairVo generateKeyPair(int keyBits)

🗣️入参解释:public static KeyPairVo generateKeyPair(密钥位数)

📤返回值解释:KeyPairVo,Base64 形态的密钥对

💡边界口径:

🧪方法示例:


🔢方法序号:3

🎯方法用途:

🧩方法定义:public static int maxEncryptBytes(String publicKey)

🗣️入参解释:public static int maxEncryptBytes(公钥)

📤返回值解释:int,单块最大明文字节数

💡边界口径:

🧪方法示例:


🔢方法序号:4

🎯方法用途:

🧩方法定义:public static String encryptByPublicKey(String data, String publicKey)

🗣️入参解释:public static String encryptByPublicKey(明文文本, 公钥)

📤返回值解释:String,Base64 密文,背后字节数固定等于模数字节数

💡边界口径:

🧪方法示例:


🔢方法序号:5

🎯方法用途:

🧩方法定义:public static String decryptByPrivateKey(String cipherTextBase64, String privateKey)

🗣️入参解释:public static String decryptByPrivateKey(Base64 密文, 私钥)

📤返回值解释:String,解密出来的明文文本

💡边界口径:

🧪方法示例:


🔢方法序号:6

🎯方法用途:

🧩方法定义:public static byte[] encryptBytes(byte[] data, String publicKey)

🗣️入参解释:public static byte[] encryptBytes(明文字节, 公钥)

📤返回值解释:byte[],密文字节,长度等于模数字节数(2048 位就是 256)

💡边界口径:

🧪方法示例:


🔢方法序号:7

🎯方法用途:

🧩方法定义:public static byte[] decryptBytes(byte[] cipherData, String privateKey)

🗣️入参解释:public static byte[] decryptBytes(密文字节, 私钥)

📤返回值解释:byte[],解密出来的原始字节

💡边界口径:

🧪方法示例:


🔢方法序号:8

🎯方法用途:

🧩方法定义:public static byte[] seal(byte[] plainText, String publicKey)

🗣️入参解释:public static byte[] seal(明文字节, 公钥)

📤返回值解释:byte[],信封字节,格式是「2字节会话密钥长度 + RSA 加密的会话密钥 + AesUtils 输出(IV 12 字节 + 密文 + GCM 标签)」

💡边界口径:

🧪方法示例:


🔢方法序号:9

🎯方法用途:

🧩方法定义:public static byte[] open(byte[] envelope, String privateKey)

🗣️入参解释:public static byte[] open(信封字节, 私钥)

📤返回值解释:byte[],信封里的正文字节

💡边界口径:

🧪方法示例:


🔢方法序号:10

🎯方法用途:

🧩方法定义:public static String sealText(String plainText, String publicKey)

🗣️入参解释:public static String sealText(明文文本, 公钥)

📤返回值解释:String,Base64 形态的信封

💡边界口径:

🧪方法示例:


🔢方法序号:11

🎯方法用途:

🧩方法定义:public static String openText(String envelopeBase64, String privateKey)

🗣️入参解释:public static String openText(Base64 信封, 私钥)

📤返回值解释:String,信封里的明文文本

💡边界口径:

🧪方法示例:


🔢方法序号:12

🎯方法用途:

🧩方法定义:public static String sign(String data, String privateKey)

🗣️入参解释:public static String sign(待签名文本, 私钥)

📤返回值解释:String,Base64 签名值,原始字节数等于模数字节数

💡边界口径:

🧪方法示例:


🔢方法序号:13

🎯方法用途:

🧩方法定义:public static byte[] signBytes(byte[] data, String privateKey)

🗣️入参解释:public static byte[] signBytes(待签名字节, 私钥)

📤返回值解释:byte[],签名字节,长度等于模数字节数

💡边界口径:

🧪方法示例:


🔢方法序号:14

🎯方法用途:

🧩方法定义:public static boolean verify(String data, String publicKey, String signBase64)

🗣️入参解释:public static boolean verify(原文, 公钥, Base64 签名)

📤返回值解释:boolean,验签通过为true,签名对不上为false

💡边界口径:

🧪方法示例:


🔢方法序号:15

🎯方法用途:

🧩方法定义:public static boolean verifyBytes(byte[] data, String publicKey, byte[] signData)

🗣️入参解释:public static boolean verifyBytes(原始字节, 公钥, 签名字节)

📤返回值解释:boolean,通过为true,不通过为false

💡边界口径:

🧪方法示例:


🔢方法序号:16

🎯方法用途:

🧩方法定义:public static byte[] encryptByPublicKeyPkcs1(byte[] data, String publicKey)

🗣️入参解释:public static byte[] encryptByPublicKeyPkcs1(明文字节, 公钥)

📤返回值解释:byte[],密文字节,长度等于模数字节数

💡边界口径:

🧪方法示例:


🔢方法序号:17

🎯方法用途:

🧩方法定义:public static byte[] decryptByPrivateKeyPkcs1(byte[] cipherData, String privateKey)

🗣️入参解释:public static byte[] decryptByPrivateKeyPkcs1(密文字节, 私钥)

📤返回值解释:byte[],解密出来的原始字节

💡边界口径:

🧪方法示例:

四、工具类源码(可直接复制)

📦领取方式: 关注点赞收藏,私信回复「java工具类」可领取100个工具类「Java企业级工具类全家桶(1-100)」的完整源码。

💡 工具类已调试通过,复制粘贴即可使用,省时省力

💡 可保存到自己网盘,永久有效


觉得对您有帮助,麻烦点点关注啦,您的关注是我创作的最大动力~ 🎯

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/14 2:37:01

Flutter跨平台鸿蒙落地:星座运势App全流程实战与踩坑指南

这套“Flutter跨平台 鸿蒙落地”的组合拳,近期被我拿来做了一个星座运势查询应用。从环境搭建、业务编码,到真机调试,整个过程踩坑不少,但最后三端(Android/iOS/HarmonyOS)跑通的那一刻,确实值…

作者头像 李华
网站建设 2026/10/14 2:36:57

全志T153 SDIO 3.0与USB 2.0双通道嵌入式通信方案解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/14 2:36:49

代价函数:模型训练中那把最关键的尺子

聊一个最基础但最容易被人忽略的概念:代价函数。做机器学习的朋友应该都有这种经历:模型结构搭好了,数据也喂进去了,结果训练半天,loss 曲线像个心电图,要么降不下去,要么直接飞到 NaN。这时候大…

作者头像 李华
网站建设 2026/10/14 2:35:31

西地那非普通片 vs 口崩片,剂型差异体现在哪里?

西地那非普通片 vs 口崩片,剂型差异体现在哪里?枸橼酸西地那非是勃起功能障碍治疗的一线用药,很多人只关注药物有效成分,却忽略剂型带来的使用差别。同样的活性成分,普通片与口崩片,在服用方式、吸收路径、…

作者头像 李华
网站建设 2026/10/14 2:34:49

AI生成HTML课件如何转成可编辑PPTX?语义解析与版式重建实战

1. 为什么AI生成的HTML课件总让人又爱又恨用AI生成HTML格式的PPT,这件事我前前后后折腾了大半年。最开始是图省事——把课程大纲往对话框里一贴,几秒钟就能吐出一份带翻页效果的HTML演示文稿,浏览器里全屏一放,动画、渐变、卡片布…

作者头像 李华