您好,登錄后才能下訂單哦!
怎么在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; } }
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。