java使用RSA加密方式實現資料加密解密的程式碼
阿新 • • 發佈:2020-01-07
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加密方式實現資料加密解密的程式碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回覆大家的。在此也非常感謝大家對我們網站的支援!
如果你覺得本文對你有幫助,歡迎轉載,煩請註明出處,謝謝!