RSA生成2048位公私钥

包含公钥私钥的生成和base64加密解密,需要的朋友拿走!

public class RSAUtils {/*** 密钥长度 于原文长度对应 以及越长速度越慢*/private final static int KEY_SIZE = 2048;/*** 用于封装随机产生的公钥与私钥*/private static Map<Integer, String> keyMap = new HashMap<Integer, String>();/*** 随机生成密钥对*/public static void genKeyPair() throws NoSuchAlgorithmException {// KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");// 初始化密钥对生成器keyPairGen.initialize(KEY_SIZE, new SecureRandom());// 生成一个密钥对,保存在keyPair中KeyPair keyPair = keyPairGen.generateKeyPair();// 得到私钥RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();// 得到公钥RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();String publicKeyString = Base64.getEncoder().encodeToString(publicKey.getEncoded());System.out.println("公钥长度>>>"+publicKeyString.length());// 得到私钥字符串String privateKeyString = Base64.getEncoder().encodeToString(privateKey.getEncoded());System.out.println("私钥长度>>>"+privateKeyString.length());// 将公钥和私钥保存到Map//0表示公钥keyMap.put(0, publicKeyString);//1表示私钥keyMap.put(1, privateKeyString);}/*** RSA公钥加密** @param str       加密字符串* @param publicKey 公钥* @return 密文* @throws Exception 加密过程中的异常信息*/public static String encrypt(String str, String publicKey) throws Exception {//base64编码的公钥byte[] decoded = Base64.getDecoder().decode(publicKey);RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(new X509EncodedKeySpec(decoded));//RSA加密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, pubKey);String outStr = Base64.getEncoder().encodeToString(cipher.doFinal(str.getBytes("UTF-8")));return outStr;}/*** RSA私钥解密** @param str        加密字符串* @param privateKey 私钥* @return 明文* @throws Exception 解密过程中的异常信息*/public static String decrypt(String str, String privateKey) throws Exception {//64位解码加密后的字符串byte[] inputByte = Base64.getDecoder().decode(str);//base64编码的私钥byte[] decoded = Base64.getDecoder().decode(privateKey);RSAPrivateKey priKey = (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(new PKCS8EncodedKeySpec(decoded));//RSA解密Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.DECRYPT_MODE, priKey);String outStr = new String(cipher.doFinal(inputByte));return outStr;}public static void main(String[] args) throws Exception {long temp = System.currentTimeMillis();//生成公钥和私钥genKeyPair();//加密字符串System.out.println("公钥:" + keyMap.get(0));System.out.println("私钥:" + keyMap.get(1));System.out.println("生成密钥消耗时间:" + (System.currentTimeMillis() - temp) / 1000.0 + "秒");String message = "RSA测试---->";System.out.println("原文:" + message);temp = System.currentTimeMillis();String messageEn = encrypt(message, keyMap.get(0));System.out.println("密文:" + messageEn);System.out.println("加密消耗时间:" + (System.currentTimeMillis() - temp) / 1000.0 + "秒");temp = System.currentTimeMillis();String messageDe = decrypt(messageEn, keyMap.get(1));System.out.println("解密:" + messageDe);System.out.println("解密消耗时间:" + (System.currentTimeMillis() - temp) / 1000.0 + "秒");}

RSA算法生成2048位公私钥相关推荐

  1. C#中用RSA算法生成公钥和私钥

    转自:https://www.cnblogs.com/micenote/p/7862989.html C#中用RSA算法生成公钥和私钥 方法一: 公钥密钥生成后,保存在同名文件夹下面,如下图: 公钥密 ...

  2. golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用

    RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...

  3. dsa java_如何为Java生成2048位DSA密钥对?

    我尝试了以下方法来生成具有2048位密钥长度的DSA私有(和公共)密钥: 通过keytool keytool -genkeypair -alias MyKeyPair -keyalg DSA -key ...

  4. 使用RSA算法生成令牌

    JWT令牌 (1)创建令牌数据 在user-oauth工程中创建测试类com.token.CreateJwtTest,使用它来创建令牌信息,代码如下: public class CreateJwtTe ...

  5. Openssl 1024bit RSA算法---公私钥获取和处理(一)

    1.简介 使用OpenSSL生成公私钥文件,然后再将文件中的信息读出的操作. 由于要对设备升级,需要用到RSA算法对一部分验证信息进行加密. 2.使用OpenSSL获取公私钥 我在window系统尝试 ...

  6. java中使用openssl生成的rsa公私钥进行数据加解密_使用openssl生成RSA公钥和私钥对...

    在ubuntu上要使用openssl的话需要先进行安装,命令如下: sudo apt-get install openssl 安装完成就可以使用openssl了. 首先需要进入openssl的交互界面 ...

  7. Java基于OpenSSL生成 RSA 公私钥对数据进行加解密

    使用OpenSSL来生成私钥和公钥 验证机器上是否安装openssl 命令:openssl version -a [root@node00 test]# openssl version -a Open ...

  8. 妙借Git自带的OpenSSL生成RSA公私钥的.pem 文件

    大家好,我是神韵,是一个技术&生活博主.出文章目的主要是两个,一是好记忆不如烂笔头,记录总结中提高自己.二是希望我的文章可以帮到大家.欢迎来点赞打卡,你们的行动将是我无限的动力. 本篇主题是: ...

  9. RSA公私钥加解密方式-工具类

    直接上代码 ​ import java.io.ByteArrayOutputStream; import java.math.BigInteger; import java.security.*; i ...

  10. OpenSSL生成 SM2公私钥

    OpenSSL生成 SM2公私钥 当前形势 国密局字[2011]50号"关于做好公钥密码算法升级工作的通知", 要求新投入运行并使用公钥密码的信息系统,应使用SM2椭圆曲线密码算法 ...

最新文章

  1. 成功解决Exception unhandled OSError cannot open resource File: F:\Program Files\Python\Python36\Lib\si
  2. c#中contextMenuStrip与datagridview使用CellMouseDown事件及treeview使用mousedown事件
  3. SAP Fiori My note应用的add to功能的后台ABAP实现
  4. Linux下部署LVS(DR)+keepalived+Nginx负载均衡
  5. 双对数坐标系matlab绘图,EXCEL自动计算液塑限并绘制图表至双对数坐标系.doc
  6. 使用Mongo Shell和Java驱动程序删除MongoDB的示例
  7. 拓端tecdat|R语言时间序列和ARIMA模型预测拖拉机销售的制造案例研究
  8. 数据签名 RSA算法
  9. android camera 废弃,在Ubuntu系统基于ROS使用废旧Android手机摄像头搭建监控设备
  10. 网络调试助手(NetAssist)不能正常创建TCP Serve连接问题
  11. 国基北盛—云计算容器云pass(2.4)平台搭建
  12. Centos8安装Redis
  13. 青果教务管理系统存储型XSS 一枚
  14. 行人重识别论文阅读6-低分辨率的行人重识别研究
  15. 用EasyHMI做的工程示例一览
  16. Altium Designer快捷键
  17. Openlayers 快速上手教程
  18. 计算机无法识别移动硬盘怎么办,移动硬盘不能识别,教您移动硬盘不能识别怎么办...
  19. uniapp中唤醒支付宝,微信进行支付并返回app
  20. 队列和堆栈 --- 先进先出和先进后出

热门文章

  1. HP惠普打印机双面打印及常规操作
  2. pr用什么显卡比较好_用视频剪辑软件pr,电脑要什么配置最好
  3. MySQL存储过程和函数的区别
  4. LSTM神经网络详解
  5. NuxtJS快速入门
  6. FPGA基础知识(四)UG902 RTL仿真与输出
  7. 【python算法系列二】快速排序算法
  8. 《流程的永恒之道:工作流及BPM技术的理论、规范、模式及最佳实践》书籍导读
  9. 新国二选office和c语言,备考全国计算机二级MS Office考试这些你知道吗?
  10. 【Oracle11gR2 | 学习】plsql dev存储过程的使用、存储函数、out类型的使用