java rsa2加密算法_java RSA加密解密
public classRSAEncrypt {private static Map keyMap = new HashMap(); //用于封装随机产生的公钥与私钥
public static void main(String[] args) throwsException {//生成公钥和私钥
genKeyPair();//加密字符串
String message = "Pass1234";
System.out.println("随机生成的公钥为:" + keyMap.get(0));
System.out.println("随机生成的私钥为:" + keyMap.get(1));
String messageEn= encrypt(message, keyMap.get(0));
System.out.println(message+ "\t加密后的字符串为:" +messageEn);
String messageDe= decrypt(messageEn, keyMap.get(1));
System.out.println("还原后的字符串为:" +messageDe);
}/*** 随机生成密钥对
*
*@throwsNoSuchAlgorithmException*/
public static void genKeyPair() throwsNoSuchAlgorithmException {//KeyPairGenerator类用于生成公钥和私钥对,基于RSA算法生成对象
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");//初始化密钥对生成器,密钥大小为96-1024位
keyPairGen.initialize(512, newSecureRandom());//生成一个密钥对,保存在keyPair中
KeyPair keyPair =keyPairGen.generateKeyPair();
RSAPrivateKey privateKey= (RSAPrivateKey) keyPair.getPrivate(); //得到私钥
RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); //得到公钥
String publicKeyString = newString(Base64.encodeBase64(publicKey.getEncoded()));//得到私钥字符串
String privateKeyString = newString(Base64.encodeBase64((privateKey.getEncoded())));//将公钥和私钥保存到Map
keyMap.put(0, publicKeyString); //0表示公钥
keyMap.put(1, privateKeyString); //1表示私钥
}/*** RSA公钥加密
*
*@paramstr 加密字符串
*@parampublicKey 公钥
*@return密文
*@throwsException 加密过程中的异常信息*/
public static String encrypt(String str, String publicKey) throwsException {//base64编码的公钥
byte[] decoded =Base64.decodeBase64(publicKey);
RSAPublicKey pubKey= (RSAPublicKey) KeyFactory.getInstance("RSA").generatePublic(newX509EncodedKeySpec(decoded));//RSA加密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
String outStr= Base64.encodeBase64String(cipher.doFinal(str.getBytes("UTF-8")));returnoutStr;
}/*** RSA私钥解密
*
*@paramstr 加密字符串
*@paramprivateKey 私钥
*@return铭文
*@throwsException 解密过程中的异常信息*/
public static String decrypt(String str, String privateKey) throwsException {//64位解码加密后的字符串
byte[] inputByte = Base64.decodeBase64(str.getBytes("UTF-8"));//base64编码的私钥
byte[] decoded =Base64.decodeBase64(privateKey);
RSAPrivateKey priKey= (RSAPrivateKey) KeyFactory.getInstance("RSA").generatePrivate(newPKCS8EncodedKeySpec(decoded));//RSA解密
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, priKey);
String outStr= newString(cipher.doFinal(inputByte));returnoutStr;
}
}
java rsa2加密算法_java RSA加密解密相关推荐
- angular和JAVA实现aes、rsa加密解密,前后端交互,前端加解密和后端JAVA加解密实现
今天实现了下AES和RSA加密解密,主要的功能是对前后端交互数据进行加密解密,为什么要用到两个算法呢,首先RSA默认的话加密长度是有限的100多个byte吧大约,并且需要公钥私钥,而AES加密没有限制 ...
- java 解密后为空_java RSA加密解密
该工具类中用到了BASE64,需要借助第三方类库:javabase64-1.3.1.jar注意:RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行 ...
- java rsa 验_Java使用RSA加密解密签名及校验
RSA加密解密类: package com.ihep; import java.io.BufferedReader; import java.io.BufferedWriter; import jav ...
- java rsa签名_Java使用RSA加密解密签名及校验
由于项目要用到非对称加密解密签名校验什么的,于是参考<Java加密解密的艺术>写一个RSA进行加密解密签名及校验的Demo,代码很简单,特此分享! 一.项目截图 代码下载后,导入到ecli ...
- java rsa 解密_Java中RSA加密解密的实现方法分析
本文实例讲述了Java中RSA加密解密的实现方法.分享给大家供大家参考,具体如下: public static void main(String[] args) throws Exception { ...
- RSA加密解密及数字签名Java实现--转
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest).阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的.当时他们三人都在麻省理工学院 ...
- Java使用RSA加密解密签名及校验
RSA加密解密类: import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; i ...
- RSA加密解密算法的java实现
最近有一个外部合作项目要求在数据传输过程中使用RSA加密算法对数据进行加密,所以需要编写一个加解密的工具类,因为对方不是java语言,所以是各自实现的这个工具,本文主要讨论实现以及双方调试过程中的一些 ...
- 1、【java数据安全】数据安全之加密解密(base64、MD、SHA、DES、AES、IDEA、PBE、DH、RSA、EIGamal)、数字签名(DSA、ECDSA)和数字证书介绍、应用示例详细介绍
java数据安全 系列文章 1.[java数据安全]数据安全之加密解密(base64.MD.SHA.DES.AES.IDEA.PBE.DH.RSA.EIGamal).数字签名(DSA.ECDSA)和数 ...
- C# Java间进行RSA加密解密交互
C# Java间进行RSA加密解密交互 原文:C# Java间进行RSA加密解密交互 这里,讲一下RSA算法加解密在C#和Java之间交互的问题,这两天纠结了很久,也看了很多其他人写的文章,颇受裨益, ...
最新文章
- 在一个IIS上同时运行两个版本ASP.NET报错的
- mxnet基础到提高(7)--卷积神经网络基础(2)
- Boost::context模块fiber的回溯测试程序
- Client Side Cache 和 Server Side Cache 的区别
- struts2中各版本jar包需求及配置设置
- centos后台登录ftp_安卓TikTok无限制版、手游扫码登录更新
- 学术检索产品比较分析
- 功能强大的pdf控件,用户无需安装任何软件即可使用
- android驱动程序失败,android studio 3.0中的haxm错误需要数字签名的驱动程序
- Github使用教程Git下载文件
- Windows 7集成IE11(离线安装包、补丁)
- Ubuntu使用ZTE MF832S上网卡拨号上网
- pinia报错, getActivePinia was called with no active Pinia. Did you forget to install pinia?
- 安卓苹果下载地址合并 苹果安卓专用二维码是如何生成的
- php微信段子,微信朋友圈有趣的段子 朋友圈配图
- 罗克韦尔AB PLC安装Studio5000提示未安装Microsoft .NET Framework 3.5的解决方法
- 百分制成绩转换五分制F【Python习题】(保姆级图文+实现代码)
- 深度学习之DCN-v2
- history路由下,Whitelabel Error Page错误
- 石墨计算机,电脑CPU可不可以用石墨做?