java的rsa作用_java 中RSA的方式实现非对称加密的实例
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 rsa 解密_Java中RSA加密解密的实现方法分析
本文实例讲述了Java中RSA加密解密的实现方法.分享给大家供大家参考,具体如下: public static void main(String[] args) throws Exception { ...
- java finally的作用_java中finally关键字的特点和作用是什么
java中finally关键字的特点和作用是什么 发布时间:2020-09-08 11:12:01 来源:亿速云 阅读:114 作者:小新 小编给大家分享一下java中finally关键字的特点和作用 ...
- java 守护线程 作用_java中守护线程的一些概念和用法
网上的资料中,守护线程的功能一般都是"只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用 ...
- java 构造函数的作用_Java中构造函数的作用(转)
https://blog.csdn.net/vipmao/article/details/51530954,我觉得讲的非常好,学习到了 构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对 ...
- java里面序列化作用_java中序列化的作用
一 什么叫序列化 通俗点讲:它是处理对象流的一种机制,即可以很方便的保存内存中java对象的状态,同时也为了方便传输. 二 序列化有什么作用 1.方便传输,速度快,还很安全,被调用方序列化,调用方反 ...
- java throws的作用_Java中throws..throw的使用与说明
throws语句 throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常.对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型.如果异常的 ...
- java comparable接口作用_Java 中 Comparable 接口的意义和用法
一, 为何需要实现Comparable接口 我们知道Collections类中包含很多对实现Collection接口的容器各种操作的静态方法. 当然, 其中最长用的莫过于排序了(Collections ...
- java new string作用_java中直接new String对象?
首先明确一点,在Java中==比较的是两个对象的地址,equals()比较的是两个对象的值,如果使用equals()来替换==,则两个输出结果都为true. 言归正传,为什么第一个返回为false? ...
- java 万元转元_java中金额元转万元工具类的实例
我就废话不多说了,大家还是直接看代码吧~ public static void main(string[] args) { // 具体的金额(单位元) string value = "880 ...
最新文章
- 找父节点和子节点个数(Poj1634)
- R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(分组颜色配置、位置配置)实战
- 卫星数据现已加入 Azure 豪华套餐,在太空向女神表个白?
- 企业品牌网站建设都涉及收取哪些方面的费用?
- STM32—— AHB、APB详解
- onSaveInstanceState在系统之后可能会杀掉Activity时调用,onStop之前
- 实例62:python
- 一个脚本就能明白Shell 脚本中的位置参数的含义
- JAVA大数据-Week3-DAY5
- c语言程序设计的反思,C语言程序设计教学反思
- 渗透技术——ARP攻击
- 安装了jdk和jre无法打开jar文件(测试过多个jdk版本和win系统,绝对百试百灵)
- 服务器上系统怎么启动iis,IIS服务器如何重新启动
- 基于JSP实现医院病历管理系统,程序员如何在工作中自我增值
- 如何让自己像打王者荣耀一样发了疯、拼了命、石乐志的学习?(强烈推荐)
- HLJUOJ1125(暴力三点一线)
- 头牌知产介绍商标为什么要打r符号?怎么打?
- 人员定位系统硬件篇:蓝牙定位信标知识科普
- Django设置Pymysql数据库
- 探究计算机的硬件组成 教案,初一信息技术探究计算机的硬件组成教案
热门文章
- linux cpu漏洞,【图片】为什么linux mint上cpu漏洞直到现在也没完全修复?_linux吧_百度贴吧...
- php聊天程序后端,php写后端运作程序总结
- python批量读取文件内容_Python 文本文件内容批量抽取实例
- 11岁的孩子能看懂C语言么,10岁小朋友开发的编程语言,给你们看看~
- java度量页面_JAVA Metrics 度量工具使用介绍1
- 生日游戏html,小朋友过生日室内游戏
- nvm 下载node 下载不下来_一键下载网页所有图片,把美丽存下来
- python技术开发证书_python+证书
- python编写通讯录管理系统_一个简单的python程序实例(通讯录)
- api网关选型_如何轻松打造百亿流量API网关?看这一篇就够了(下)