java使用RSA加密方式实现数据加密解密的代码
更新时间:2019年11月06日 10:05:15 作者:数据架构师
这篇文章给大家分享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; } }
总结
以上所述是小编给大家介绍的java使用RSA加密方式实现数据加密解密的代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
相关文章
MyBatis基于pagehelper实现分页原理及代码实例
这篇文章主要介绍了MyBatis基于pagehelper实现分页原理及代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-06-06SpringBoot WebService服务端&客户端使用案例教程
这篇文章主要介绍了SpringBoot WebService服务端&客户端使用案例教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2023-10-10关于@ApiImplicitParams、ApiImplicitParam的使用说明
这篇文章主要介绍了关于@ApiImplicitParams、ApiImplicitParam的使用说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-10-10记一次集成swagger2(Knife4j)在线文档提示:Knude4j文档请求异常的解决办法
Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案,下面这篇文章主要给大家介绍了关于一次集成swagger2(Knife4j)在线文档提示:Knude4j文档请求异常的解决办法,文中通过代码介绍的非常详细,需要的朋友可以参考下2024-02-02
最新评论