java 中RSA的方式实现非对称加密的实例
发布时间 - 2026-01-11 02:40:31 点击率:次java 中RSA的方式实现非对称加密的实例

RSA通俗理解:
你只要去想:既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。
实现代码:
package com.sahadev;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
import org.apache.commons.codec.binary.Base64;
public class RSA {
public static void main(String[] args) {
JDKRSA();
}
public static void JDKRSA() {
try {
// 构建密钥对儿
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(512);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
RSAPublicKey rsaPublicKey = (RSAPublicKey) keyPair.getPublic();
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) keyPair.getPrivate();
System.out.println("Public Key : " + org.apache.commons.codec.binary.Base64.encodeBase64String(rsaPublicKey.getEncoded()));
System.out.println("Private Key : " + org.apache.commons.codec.binary.Base64.encodeBase64String(rsaPrivateKey.getEncoded()));
// 2.私钥加密,公钥解密---加密
PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] result = cipher.doFinal(DH.src.getBytes());
System.out.println("私钥加密,公钥解密------加密 : " + Base64.encodeBase64String(result));
// 3.私钥加密,公钥解密---解密
X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());
keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, publicKey);
result = cipher.doFinal(result);
System.out.println("私钥加密,公钥解密------解密 : " + new String(result));
// 4.公钥加密,私钥解密---加密
x509EncodedKeySpec = new X509EncodedKeySpec(rsaPublicKey.getEncoded());
keyFactory = KeyFactory.getInstance("RSA");
publicKey = keyFactory.generatePublic(x509EncodedKeySpec);
cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
result = cipher.doFinal(DH.src.getBytes());
System.out.println("公钥加密,私钥解密------加密 : " + Base64.encodeBase64String(result));
// 5.公钥加密,私钥解密---解密
pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(rsaPrivateKey.getEncoded());
keyFactory = KeyFactory.getInstance("RSA");
privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);
cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
result = cipher.doFinal(result);
System.out.println("公钥加密,私钥解密------解密 : " + new String(result));
} catch (Exception e) {
e.printStackTrace();
}
}
}
附上输出结果:
Public Key : MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAJcFshoP5xm94r2aTbe++aMZMzJtXHxDpqmMQ9aL1cEthr2Xtac+Eckv32Kzb4R8C/6vObNBfd8sWx9FU5N2y6cCAwEAAQ== Private Key : MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAlwWyGg/nGb3ivZpNt775oxkzMm1cfEOmqYxD1ovVwS2GvZe1pz4RyS/fYrNvhHwL/q85s0F93yxbH0VTk3bLpwIDAQABAkBdAA7rabug6IRGykztyFcmjxAuD5aSl358jnoAFuCtMo4skfxh1vR4ENFUE0Lt0zJ3CKVH0o9UQDNG0r4jeOGRAiEA3KuXps9OG0AXuxLggg0e7B1Os5C3gNrH2fMqAPjtpY0CIQCvM4EPfdrjjNQiM0ATVBT5jZnw3PRu33pdyISWuoMHAwIgDOLMSUZjxj2Y5Si2CYIgoyMW/G9f99tOvlBvzHy8y+UCIF94MVu/uQdGNlJsmv3tU4CpKLmXrZq9LHDuU1HPUJcBAiEAy/0OS2Q9EBfmPwhsGXF4WMxj4wG0xzNFWxSeZB0qxzk= 私钥加密,公钥解密------加密 : NXF87irBEmK3x/fW7IWY4GuA8AP4Rvj4DJSp2Cjjsoo5X/ScHHKdvYtlM+9TOUAvMeuKWk5WH70g53q7+E73zg== 私钥加密,公钥解密------解密 : Hello,sahadev! 公钥加密,私钥解密------加密 : hjL8928jCbNtVCRhKaYAxQNJmiIAktBskhff2I01pbaHtfGH6GJTcP1i345/3I9OzwoVFxvi/oXgVJsIsg7MOQ== 公钥加密,私钥解密------解密 : Hello,sahadev!
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# java
# RSA
# 加密
# 加密的实例
# java 非对称加密算法RSA实现详解
# JAVA加密算法- 非对称加密算法(DH
# RSA)的详细介绍
# Java 实现常见的非对称加密算法
# 解决JAVA非对称加密不同系统加密结果不一致的问题
# java 非对称加密算法DH实现详解
# java结合keytool如何实现非对称加密与解密详解
# Java编程实现非对称加密的方法详解
# java 中DH的方式实现非对称加密的实例
# 教你用Java实现RSA非对称加密算法
# 公钥
# 我才
# 如有
# 希望能
# 谢谢大家
# 去想
# 发消息
# 疑问请
# 非对称
# public
# static
# String
# main
# void
# commons
# apache
# org
# binary
# codec
# args
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
进行网站优化必须要坚持的四大原则
Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理
在线制作视频网站免费,都有哪些好的动漫网站?
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
Laravel怎么使用artisan命令缓存配置和视图
Java类加载基本过程详细介绍
如何撰写建站申请书?关键要点有哪些?
制作旅游网站html,怎样注册旅游网站?
Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel定时任务怎么设置_Laravel Crontab调度器配置
如何在自有机房高效搭建专业网站?
Laravel如何实现模型的全局作用域?(Global Scope示例)
音响网站制作视频教程,隆霸音响官方网站?
Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何在橙子建站中快速调整背景颜色?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
如何生成腾讯云建站专用兑换码?
Laravel如何使用Sanctum进行API认证?(SPA实战)
高端云建站费用究竟需要多少预算?
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
Laravel distinct去重查询_Laravel Eloquent去重方法
php485函数参数是什么意思_php485各参数详细说明【介绍】
Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】
Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中
如何挑选高效建站主机与优质域名?
python中快速进行多个字符替换的方法小结
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
浅述节点的创建及常见功能的实现
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
如何在IIS中配置站点IP、端口及主机头?
如何快速生成专业多端适配建站电话?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
详解Android中Activity的四大启动模式实验简述
Win11怎样安装网易有道词典_Win11安装词典教程【步骤】
如何确保FTP站点访问权限与数据传输安全?
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
如何快速生成可下载的建站源码工具?
LinuxShell函数封装方法_脚本复用设计思路【教程】
昵图网官方站入口 昵图网素材图库官网入口
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Laravel中Service Container是做什么的_Laravel服务容器与依赖注入核心概念解析
简单实现Android验证码
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
BootStrap整体框架之基础布局组件
上一篇:汕头网站建设如何快速提升排名?
上一篇:汕头网站建设如何快速提升排名?

