怎么在java中使用RSA加密方式加密解密数据?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
RSA的应用
RSA是一种非对称加密算法。现在,很多登陆表单的密码的都采用RSA加密,例如京东中的登陆使用公钥对密码进行加密
java使用RSA加密方式实现数据加密解密,需要首先产生私钥和公钥
测试代码
public static void main(String args[])
{
try {
RSADemo rsa=new RSADemo();
rsa.generateKey();
byte[] data=rsa.encrypt("luanpeng".getBytes());
byte[] data1=rsa.decrypt(data);
String str=new String(data1);
System.out.println(str);
} catch (Exception e) {
System.out.println(e.toString());
}
}
RSA工具类的实现
package com.lp.app.safe;
import java.security.*;
import java.security.interfaces.*;
import java.math.*;
public class RSADemo {
public RSADemo() {
}
PublicKey pbkey;
PrivateKey prkey;
public void generateKey() {
try {
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair kp = kpg.genKeyPair();
pbkey = kp.getPublic();
prkey = kp.getPrivate();
} catch (Exception e) {
}
}
//加密,需要公钥
public byte[] encrypt(byte[] ptext) throws Exception {
// 获取公钥及参数e,n
RSAPublicKey pbk = (RSAPublicKey)pbkey;
BigInteger e = pbk.getPublicExponent();
BigInteger n = pbk.getModulus();
// 获取明文m
BigInteger m = new BigInteger(ptext);
// 计算密文c
BigInteger c = m.modPow(e, n);
return c.toByteArray();
}
//使用私钥进行解密
public byte[] decrypt(byte[] ctext) throws Exception {
// 读取密文
BigInteger c = new BigInteger(ctext);
// 读取私钥
RSAPrivateKey prk = (RSAPrivateKey)prkey;
BigInteger d = prk.getPrivateExponent();
// 获取私钥参数及解密
BigInteger n = prk.getModulus();
BigInteger m = c.modPow(d, n);
// 显示解密结果
byte[] mt = m.toByteArray();
return mt;
}
}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。