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的方式实现非对称加密的实例相关推荐

  1. java rsa 解密_Java中RSA加密解密的实现方法分析

    本文实例讲述了Java中RSA加密解密的实现方法.分享给大家供大家参考,具体如下: public static void main(String[] args) throws Exception { ...

  2. java finally的作用_java中finally关键字的特点和作用是什么

    java中finally关键字的特点和作用是什么 发布时间:2020-09-08 11:12:01 来源:亿速云 阅读:114 作者:小新 小编给大家分享一下java中finally关键字的特点和作用 ...

  3. java 守护线程 作用_java中守护线程的一些概念和用法

    网上的资料中,守护线程的功能一般都是"只要当前JVM实例中尚存任何一个非守护线程没有结束,守护线程就全部工作:只有当最后一个非守护线程结束是,守护线程随着JVM一同结束工作,Daemon作用 ...

  4. java 构造函数的作用_Java中构造函数的作用(转)

    https://blog.csdn.net/vipmao/article/details/51530954,我觉得讲的非常好,学习到了 构造函数的最大作用就是创建对象时完成初始化,当我们在new一个对 ...

  5. java里面序列化作用_java中序列化的作用

    一  什么叫序列化 通俗点讲:它是处理对象流的一种机制,即可以很方便的保存内存中java对象的状态,同时也为了方便传输. 二 序列化有什么作用 1.方便传输,速度快,还很安全,被调用方序列化,调用方反 ...

  6. java throws的作用_Java中throws..throw的使用与说明

    throws语句 throws总是出现在一个函数头中,用来标明该成员函数可能抛出的各种异常.对大多数Exception子类来说,Java 编译器会强迫你声明在一个成员函数中抛出的异常的类型.如果异常的 ...

  7. java comparable接口作用_Java 中 Comparable 接口的意义和用法

    一, 为何需要实现Comparable接口 我们知道Collections类中包含很多对实现Collection接口的容器各种操作的静态方法. 当然, 其中最长用的莫过于排序了(Collections ...

  8. java new string作用_java中直接new String对象?

    首先明确一点,在Java中==比较的是两个对象的地址,equals()比较的是两个对象的值,如果使用equals()来替换==,则两个输出结果都为true. 言归正传,为什么第一个返回为false? ...

  9. java 万元转元_java中金额元转万元工具类的实例

    我就废话不多说了,大家还是直接看代码吧~ public static void main(string[] args) { // 具体的金额(单位元) string value = "880 ...

最新文章

  1. 找父节点和子节点个数(Poj1634)
  2. R语言使用ggplot2包使用geom_violin函数绘制分组小提琴图(分组颜色配置、位置配置)实战
  3. 卫星数据现已加入 Azure 豪华套餐,在太空向女神表个白?
  4. 企业品牌网站建设都涉及收取哪些方面的费用?
  5. STM32—— AHB、APB详解
  6. onSaveInstanceState在系统之后可能会杀掉Activity时调用,onStop之前
  7. 实例62:python
  8. 一个脚本就能明白Shell 脚本中的位置参数的含义
  9. JAVA大数据-Week3-DAY5
  10. c语言程序设计的反思,C语言程序设计教学反思
  11. 渗透技术——ARP攻击
  12. 安装了jdk和jre无法打开jar文件(测试过多个jdk版本和win系统,绝对百试百灵)
  13. 服务器上系统怎么启动iis,IIS服务器如何重新启动
  14. 基于JSP实现医院病历管理系统,程序员如何在工作中自我增值
  15. 如何让自己像打王者荣耀一样发了疯、拼了命、石乐志的学习?(强烈推荐)
  16. HLJUOJ1125(暴力三点一线)
  17. 头牌知产介绍商标为什么要打r符号?怎么打?
  18. 人员定位系统硬件篇:蓝牙定位信标知识科普
  19. Django设置Pymysql数据库
  20. 探究计算机的硬件组成 教案,初一信息技术探究计算机的硬件组成教案

热门文章

  1. linux cpu漏洞,【图片】为什么linux mint上cpu漏洞直到现在也没完全修复?_linux吧_百度贴吧...
  2. php聊天程序后端,php写后端运作程序总结
  3. python批量读取文件内容_Python 文本文件内容批量抽取实例
  4. 11岁的孩子能看懂C语言么,10岁小朋友开发的编程语言,给你们看看~
  5. java度量页面_JAVA Metrics 度量工具使用介绍1
  6. 生日游戏html,小朋友过生日室内游戏
  7. nvm 下载node 下载不下来_一键下载网页所有图片,把美丽存下来
  8. python技术开发证书_python+证书
  9. python编写通讯录管理系统_一个简单的python程序实例(通讯录)
  10. api网关选型_如何轻松打造百亿流量API网关?看这一篇就够了(下)