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
相关文章:
活动邀请函制作网站有哪些,活动邀请函文案?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
视频网站制作教程,怎么样制作优酷网的小视频?
公众号网站制作网页,微信公众号怎么制作?
如何在阿里云通过域名搭建网站?
清除minerd进程的简单方法
山东网站制作公司有哪些,山东大源集团官网?
如何在万网自助建站平台快速创建网站?
建站主机选购指南与交易推荐:核心配置解析
中山网站推广排名,中山信息港登录入口?
宿州网站制作公司兴策,安徽省低保查询网站?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
建站之星IIS配置教程:代码生成技巧与站点搭建指南
网站制作网站,深圳做网站哪家比较好?
小型网站制作HTML,*游戏网站怎么搭建?
如何通过二级域名建站提升品牌影响力?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
高性能网站服务器配置指南:安全稳定与高效建站核心方案
黑客如何通过漏洞一步步攻陷网站服务器?
建站主机是否属于云主机类型?
营销式网站制作方案,销售哪个网站招聘效果最好?
定制建站哪家更专业可靠?推荐榜单揭晓
建站之星导航如何优化提升用户体验?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何在万网自助建站中设置域名及备案?
北京制作网站的公司排名,北京三快科技有限公司是做什么?北京三快科技?
如何通过VPS搭建网站快速盈利?
香港服务器租用每月最低只需15元?
h5网站制作工具有哪些,h5页面制作工具有哪些?
python的本地网站制作,如何创建本地站点?
高端云建站费用究竟需要多少预算?
青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?
如何在IIS管理器中快速创建并配置网站?
代刷网站制作软件,别人代刷火车票靠谱吗?
利用JavaScript实现拖拽改变元素大小
黑客如何利用漏洞与弱口令入侵网站服务器?
如何快速搭建高效香港服务器网站?
如何用好域名打造高点击率的自主建站?
如何在阿里云购买域名并搭建网站?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
高端企业智能建站程序:SEO优化与响应式模板定制开发
建站主机功能解析:服务器选择与快速搭建指南
公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?
如何选购建站域名与空间?自助平台全解析
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
*请认真填写需求信息,我们会在24小时内与您取得联系。