怎么在java中使用RSA加密方式加密解密數(shù)據(jù)?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、成都微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了克山免費(fèi)建站歡迎大家使用!
RSA的應(yīng)用
RSA是一種非對(duì)稱(chēng)加密算法?,F(xiàn)在,很多登陸表單的密碼的都采用RSA加密,例如京東中的登陸使用公鑰對(duì)密碼進(jìn)行加密
java使用RSA加密方式實(shí)現(xiàn)數(shù)據(jù)加密解密,需要首先產(chǎn)生私鑰和公鑰
測(cè)試代碼
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工具類(lèi)的實(shí)現(xiàn)
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 { // 獲取公鑰及參數(shù)e,n RSAPublicKey pbk = (RSAPublicKey)pbkey; BigInteger e = pbk.getPublicExponent(); BigInteger n = pbk.getModulus(); // 獲取明文m BigInteger m = new BigInteger(ptext); // 計(jì)算密文c BigInteger c = m.modPow(e, n); return c.toByteArray(); } //使用私鑰進(jìn)行解密 public byte[] decrypt(byte[] ctext) throws Exception { // 讀取密文 BigInteger c = new BigInteger(ctext); // 讀取私鑰 RSAPrivateKey prk = (RSAPrivateKey)prkey; BigInteger d = prk.getPrivateExponent(); // 獲取私鑰參數(shù)及解密 BigInteger n = prk.getModulus(); BigInteger m = c.modPow(d, n); // 顯示解密結(jié)果 byte[] mt = m.toByteArray(); return mt; } }
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。