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;
}
}
总结
以上所述是小编给大家介绍的java使用RSA加密方式实现数据加密解密的代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!