java 中使用RSA非对称性加密解密
需要引入的jar包:bcprov-jdk15on-161.jar
下载地址:https://www.bouncycastle.org/latest_releases.html
//公钥加密
public static String encrypt(String content, PublicKey publicKey) {
try{
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("RSA/NONE/OAEPWITHSHA256AndMGF1Padding","BC");
// Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");//java默认"RSA"="RSA/ECB/PKCS1Padding"
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] output = cipher.doFinal(content.getBytes());
BASE64Encoder encoder = new BASE64Encoder();
return encoder.encode(output);
}catch (Exception e){
e.printStackTrace();
}
return null;
}
//私钥解密
public static String decrypt(String content, PrivateKey privateKey) {
try {
// Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Cipher cipher = Cipher.getInstance("RSA/NONE/OAEPWITHSHA256AndMGF1Padding","BC");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodeBuffer = decoder.decodeBuffer(content);
byte [] b = cipher.doFinal(decodeBuffer);
return new String(b);
} catch (Exception e){
e.printStackTrace();
return null;
}
}
测试
private static String data2 ="g7ZcUMRAIAsVDwrAFi5F4uia6KhW3gCbyfKLDxLWiBTbHuJpfPA3iSLz7RYs9/6tMO6Vq8kG4nJs9+OMyK0psK/iCLA8PsEVRczsNNJ9OS10eZ/MbKoCpRRCC89aHf59JQy757g1wquq5yCXbnJRPd7lQYobJnxp1ZeBWB9NwruISt075/6sS8Kram2IXFLP5LypFNWRCPB9HVKz3HFlLqRH0lWfIbPO1VDYsK6ooRvRbr4MnRAACs+p92VeAg6NRcqWvP4o7f/wY3DcBYpXLVfxSQjuRG0t3t61Agc81COPaelk1f2SShtmsX8MyAZWdZpTqnTwIVRiRIXjl8PHXw==";
public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeySpecException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException, InvalidKeyException, IOException {
try
{
String ss = "TKG-Jqs1g_O_4D37fFkOv9NGBqtPXTo-zc7b1VFf-OY";
PublicKey publicKey4 = getPublicKey(yourPublicKey);
String encrypt = encrypt(ss, publicKey4);
System.out.println(encrypt);
PrivateKey privateKey4 = getPrivateKey(your_PRIVATE_KEY);
String decrypt = decrypt(data2, privateKey4);
System.out.println(decrypt);
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* String转公钥PublicKey
* @param key
* @return
* @throws Exception
*/
public static PublicKey getPublicKey(String key) throws Exception {
byte[] keyBytes;
keyBytes = (new BASE64Decoder()).decodeBuffer(key);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
return publicKey;
} /**
* String转私钥PrivateKey
* @param key
* @return
* @throws Exception
*/
public static PrivateKey getPrivateKey(String key) throws Exception {
byte[] keyBytes;
keyBytes = (new BASE64Decoder()).decodeBuffer(key);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
return privateKey;
}
java 中使用RSA非对称性加密解密的更多相关文章
- Java中使用RSA算法加密
Java中使用RSA算法加密 概述 RSA加密算法是一种非对称加密算法 RSA加密的方式 使用公钥加密的数据,利用私钥进行解密 使用私钥加密的数据,利用公钥进行解密 RSA是一对密钥.分别是公钥和私钥 ...
- .NET和JAVA中BYTE的区别以及JAVA中“DES/CBC/PKCS5PADDING” 加密解密在.NET中的实现
场景:java 作为客户端调用已有的一个.net写的server的webservice,输入string,返回字节数组. 问题:返回的值不是自己想要的,跟.net客户端直接调用总是有差距 分析:平台不 ...
- java DES转C#DES加密解密
一个程序用到java的cn.core.jar加密的,需要在.NET 中解密,发现JAVA的des算法与C#的有点区别. 自己不太懂加密解密算法,所以找了个省事的方法,用IKVM.NET,用这个将cn. ...
- php中base64_decode与base64_encode加密解密函数
php中base64_decode与base64_encode加密解密函数,实例分析了base64加密解密函数的具体用法,具有一定的实用价值,需要的朋友可以参考下 本文实例讲述了php中base64_ ...
- java中使用MD5进行加密 BASE64Encoder 编码
原文地址:http://www.cnblogs.com/weiwangnuanyang/articles/4326336.html java中使用MD5进行加密 在各种应用系统的开发中,经常需 ...
- C# 加密(Encrypt) 解密(Decrypt) 操作类 java与 C# 可以相互加密解密
public sealed class EncryptUtils { #region Base64加密解密 /// <summary> /// Base64加密 /// </summ ...
- java中使用MD5进行加密
java中使用MD5进行加密 在各种应用系统的开发中,经常需要存储用户信息,很多地方都要存储用户密码,而将用户密码直接存储在服务器上显然是不安全的,本文简要介绍工作中常用的 MD5加密算法,希 ...
- DES加密 java与.net可以相互加密解密两种方法
DES加密 java与.net可以相互加密解密两种方法 https://www.cnblogs.com/DrWang/archive/2011/03/30/2000124.html sun.misc. ...
- JAVA中使用RSA通过秘钥文件对字符串进行加密解密
技术交流群: 233513714 //字符串进行加密算法的名称 public static final String ALGORITHM = "RSA"; //字符串进行加密填充的 ...
随机推荐
- Linq语法常见普通语法
闲言碎语 近期比较忙,但还是想写点什么,就分享一些基础的知识给大家看吧,希望能帮助一些linq新手,如果有其它疑问,可以进右上角群,进行交流探讨,谢谢. 开门见山 读这篇文章之前,我先说下,每一种搜索 ...
- 西湖论剑2019-msc之奇怪的TTL
msc1给了一串很长的TTL字符,参考一些隐写的文章,猜测是在ttl中藏了信息,题目是这样的 我们截获了一些IP数据报,发现报文头中的TTL值特别可疑,怀疑是通信方嵌入了数据到TTL,我们将这些TTL ...
- 我的Windows日常——Win7完美兼容tsmmc.msc的方法
操作步骤 32位操作系统: 1.将2003系统C:\WINDOWS\system32目录下的mstsmhst.dll.mstsmmc.dll.tsmmc.msc拷贝到Windows7系统中的C:\WI ...
- Linux(CentOS7)下如何配置多个Tomcat容器
一.Linux版本 二.上传并解压apache-tomcat-7.0.90压缩包,然后复制粘贴出来多个tomcat 解压缩 tar -xzvf apache-tomcat-7.0.90.tar.gz ...
- Microsoft Store应用安装路径和应用推荐——如何用Linux命令操控windows
本人是cnblog萌新,刚学编程不久的菜鸟,这是我的第一篇博客,请各位轻喷 Microsoft store安装路径: 相信很多人都跟我一样有强迫症,文件找不到安装目录就不舒服.一开始在系统盘找不到Wi ...
- Codeforces round 1086
Div1 528 我菜哭了.jpg 这个C的出题人能不能停止出题啊QaQ A 这不是裸的斯坦纳树嘛! 然后我就写上了.jpg 然后我没调出来... 然后我发现...这不是傻逼题吗... 直接按照$x$ ...
- 随心测试_软测基础_004<测试人员工作职责>
接上篇续,依据_软测基础体系:<依据不同的测试对象,选取适合的方法,按照设计的流程完成测试工作,检验整个过程是否达到测试的目的>.“学以致用”,实践于工作职责 常见面试题: —— 诸如以下 ...
- vue移动端常用组件
3d picker组件 参考链接:https://segmentfault.com/a/1190000007253581?utm_source=tag-newest安装:npm install vue ...
- 证明与计算(2): 离散对数问题(Discrete logarithm Problem, DLP)
离散对数问题,英文是Discrete logarithm Problem,有时候简写为Discrete log,该问题是十几个开放数学问题(Open Problems in Mathematics, ...
- react dnd demo
target import React ,{ Component } from 'react'; import { DropTarget } from 'react-dnd'; import Item ...