java使用RSA加密方式實(shí)現(xiàn)數(shù)據(jù)加密解密的代碼
RSA的應(yīng)用
RSA是一種非對稱加密算法?,F(xiàn)在,很多登陸表單的密碼的都采用RSA加密,例如京東中的登陸使用公鑰對密碼進(jìn)行加密
java使用RSA加密方式實(shí)現(xiàn)數(shù)據(jù)加密解密,需要首先產(chǎn)生私鑰和公鑰
測試代碼
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工具類的實(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;
}
}
總結(jié)
以上所述是小編給大家介紹的java使用RSA加密方式實(shí)現(xiàn)數(shù)據(jù)加密解密的代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
詳解Spring Data Jpa當(dāng)屬性為Null也更新的完美解決方案
這篇文章主要介紹了詳解Spring Data Jpa當(dāng)屬性為Null也更新的完美解決方案,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-02-02
SpringData JPA實(shí)體映射與關(guān)系映射的實(shí)現(xiàn)
Spring Data JPA作為Spring生態(tài)系統(tǒng)中的核心項(xiàng)目,通過JPA規(guī)范提供了優(yōu)雅而強(qiáng)大的實(shí)體映射與關(guān)系處理機(jī)制,下面就來介紹一下,感興趣的可以了解一下2025-04-04
Java的設(shè)計(jì)模式編程中迪米特法則的應(yīng)用示例
這篇文章主要介紹了Java的設(shè)計(jì)模式編程中迪米特法則的應(yīng)用示例,迪米特法則中主張創(chuàng)建和使用弱耦合的類,需要的朋友可以參考下2016-02-02
java面向?qū)ο蠡A(chǔ)_final詳細(xì)介紹
本文將詳細(xì)介紹java final 對象的使用,需要了解更多的朋友可以參考下2012-11-11
MyBatis-Plus數(shù)據(jù)權(quán)限插件的簡單使用
在MyBatis-Plus中,通過DataPermissionInterceptor插件實(shí)現(xiàn)數(shù)據(jù)權(quán)限控制,首先需要創(chuàng)建自定義注解和處理類,利用JSQLParser庫動態(tài)修改SQL,實(shí)現(xiàn)按角色權(quán)限過濾數(shù)據(jù),配置類中注冊攔截器,確保只有授權(quán)用戶能訪問指定數(shù)據(jù),感興趣的可以了解一下2024-10-10
Java 如何將表格數(shù)據(jù)導(dǎo)入word文檔中
這篇文章主要介紹了Java將表格數(shù)據(jù)導(dǎo)入word文檔中的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
Mybatis的SqlRunner執(zhí)行流程實(shí)現(xiàn)
MyBatis提供了一個(gè)用于操作數(shù)據(jù)庫的SqlRunner工具類,對JDBC做了很好的封裝,本文主要介紹了Mybatis的SqlRunner執(zhí)行流程實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10

