重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
怎么在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; } }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联网站建设公司行业资讯频道,感谢您对创新互联建站的支持。
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、建站服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。