测试通过:

package tsoffice;import javax.crypto.Cipher;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
import java.util.Base64;public final class TestRSA
{private final static String ALGORITHM = "RSA";private static final String CHARSET   = "utf-8";/*** 密钥长度 于原文长度对应 以及越长速度越慢*/private final static int KEY_SIZE = 512;/*** 用于封装随机产生的公钥与私钥*/private static Map<Integer, String> keyMap = new HashMap<Integer, String>();/*** 随机生成密钥对*/public static void genKeyPair() throws NoSuchAlgorithmException {KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(ALGORITHM);keyPairGen.initialize(KEY_SIZE, new SecureRandom());KeyPair keyPair = keyPairGen.generateKeyPair();RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();String publicKeyString = Base64.getEncoder().encodeToString(publicKey.getEncoded());String privateKeyString = Base64.getEncoder().encodeToString(privateKey.getEncoded());keyMap.put(0, publicKeyString);keyMap.put(1, privateKeyString);}public static String encrypt(String str, String publicKey) throws Exception {//base64编码的公钥byte[] decoded = Base64.getDecoder().decode(publicKey);RSAPublicKey pubKey = (RSAPublicKey) KeyFactory.getInstance(ALGORITHM).generatePublic(new X509EncodedKeySpec(decoded));//RSA加密Cipher cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.ENCRYPT_MODE, pubKey);byte[] encrypted = cipher.doFinal(str.getBytes(CHARSET));System.out.println("encrypted="+encrypted.length);return Base64.getEncoder().encodeToString(encrypted);}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(ALGORITHM).generatePrivate(new PKCS8EncodedKeySpec(decoded));//RSA解密Cipher cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.DECRYPT_MODE, priKey);return new String(cipher.doFinal(inputByte));}public static void main(String[] args) throws Exception {long temp = System.currentTimeMillis();//生成公钥和私钥genKeyPair();//加密字符串System.out.println("公钥:" + keyMap.get(0).length());System.out.println("私钥:" + keyMap.get(1).length());System.out.println("生成密钥消耗时间:" + (System.currentTimeMillis() - temp) / 1000.0 + "秒");String message = "RSA测试:泰山Office";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 + "秒");}
}

JAVA RSA加密解密代码范例(Base64版)相关推荐

  1. Java RSA加密解密

    转自 http://blog.csdn.net/bbld_/article/details/38777491 概述 RSA是目前最有影响力的公钥加密算法,该算法基于一个十分简单的数论事实:将两个大素数 ...

  2. java RSA加密解密--转载

    原文地址:http://www.blogjava.net/icewee/archive/2012/05/19/378570.html 该工具类中用到了BASE64,需要借助第三方类库:javabase ...

  3. java rsa加密解密_前端实现对请求参数进行RSA加密amp;解密,针对字符串过长进行分段加密amp;分段解密的处理...

    前言 在需求开发中,为了安全起见,我们都会难免遇到需要对一些敏感参数进行加密或者解密.所以,今天给大家分享的就是使用jsencrypt对请求参数进行RSA加密与解密,发这篇文章其实主要因为近期我的一位 ...

  4. java RSA加密解密实现(含分段加密)

    该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar 下载地址:http://download.csdn.net/detail/centralperk/50255 ...

  5. python实现rsa加密解密代码_使用python实现rsa算法代码

    RSA算法是一种非对称加密算法,是现在广泛使用的公钥加密算法,主要应用是加密信息和数字签名. 维基百科给出的RSA算法简介如下: 假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息.她可以 ...

  6. C# Java间进行RSA加密解密交互

    C# Java间进行RSA加密解密交互 原文:C# Java间进行RSA加密解密交互 这里,讲一下RSA算法加解密在C#和Java之间交互的问题,这两天纠结了很久,也看了很多其他人写的文章,颇受裨益, ...

  7. MacOS下使用C语言基于openssl库进行RSA加密解密

    MacOS下使用C语言基于openssl库进行RSA加密解密 1 安装openssl并生成密钥 首先当然要安装openssl(这里记得看一下安装路径,应该是/usr/local/Cellar/open ...

  8. RSA加密解密及数字签名Java实现--转

    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院 ...

  9. C# Java间进行RSA加密解密交互(二)

    接着前面一篇文章C# Java间进行RSA加密解密交互,继续探讨这个问题. 在前面,虽然已经实现了C# Java间进行RSA加密解密交互,但是还是与项目中要求的有所出入.在项目中,客户端(Java)的 ...

  10. java rsa加密 加签_RSA加密解密与加签验签

    RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.1987年7月首次在美国公布 ...

最新文章

  1. Windows中打开方式...无法指定程序的解决办法
  2. javascript基础整理
  3. Linxu嵌入式汇编语言
  4. matlab平面绘图命令
  5. 二叉树的先序建树后序输出
  6. j2ee 简单网站搭建:(十)jquery ztree 插件使用入门
  7. 找不到具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序
  8. file标签选择文件change事件失效处理方法
  9. 【微信小程序】开发、测试、上线全流程梳理总结
  10. word利用宏批量调整图片大小
  11. 详解DNS域名解析全过程
  12. css画心形原理,如何用 css 画一个心形
  13. 显卡的各种故障维修方法
  14. 卡布奇诺搭建教程_移动Web应用程序框架匹配,第2部分,探索卡布奇诺咖啡以进行移动Web应用程序开发
  15. 良心推荐:看完这10部豆瓣高分美剧,英语水平提升几个Level!
  16. 台式计算机 按键盘字母键 没反应6,台式电脑键盘打出的字母不对应怎么办
  17. P1247 取火柴游戏 (博弈论)
  18. C++推箱子小游戏(源码)
  19. 为什么iPhone通常比Android具有更好的音质?
  20. Motrix for Mac(全能高速下载工具)

热门文章

  1. 机器学习:残差学习、RNN、GAN、迁移学习、知识蒸馏
  2. 后缀表达式----栈
  3. android 为什么下拉框是dialog形式,基础组件(二) - osc_sd6nmwhn的个人空间 - OSCHINA - 中文开源技术交流社区...
  4. Java宣言的时候,JAVA面向对象-对象宣言
  5. local.china java_java-JDBC无法登录到LocalDB实例,但是在SSMS中,...
  6. java 图片旋转裁剪_【Java实例】使用Thumbnailator生成缩略图(缩放、旋转、裁剪、水印)...
  7. nsa php版本,mnsa网络
  8. es搜索引擎架构_集群日志收集架构ELK
  9. java isdebugenabled_在log4j中,在记录之前检查isDebugEnabled是否可以提高性能?
  10. java email 的格式_使用Java将电子邮件转换为原始格式