Java生成非對稱型加密公鑰和私鑰的方法
本文實(shí)例講述了Java生成非對稱型加密公鑰和私鑰的方法。分享給大家供大家參考。具體如下:
非對稱型加密非常適合多個客戶端和服務(wù)器之間的秘密通訊,客戶端使用同一個公鑰將明文加密,而這個公鑰不能逆向的解密,密文發(fā)送到服務(wù)器后有服務(wù)器端用私鑰解密,這樣就做到了明文的加密傳送。
非對稱型加密也有它先天的缺點(diǎn),加密、解密速度慢制約了它的發(fā)揮,如果你有大量的文字需要加密傳送,建議你通過非對稱型加密來把對稱型‘密鑰'分發(fā)到客戶端,及時更新對稱型‘密鑰'。
KeyRSA.java如下:
import java.io.*;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
/**
* RSA非對稱型加密的公鑰和私鑰
*/
public class KeyRSA {
private KeyPairGenerator kpg = null;
private KeyPair kp = null;
private PublicKey public_key = null;
private PrivateKey private_key = null;
private FileOutputStream public_file_out = null;
private ObjectOutputStream public_object_out = null;
private FileOutputStream private_file_out = null;
private ObjectOutputStream private_object_out = null;
/**
* 構(gòu)造函數(shù)
* @param in 指定密匙長度(取值范圍:512~2048)
* @throws NoSuchAlgorithmException 異常
*/
public KeyRSA(int in, String address) throws NoSuchAlgorithmException,
FileNotFoundException, IOException {
kpg = KeyPairGenerator.getInstance("RSA"); //創(chuàng)建‘密匙對'生成器
kpg.initialize(in); //指定密匙長度(取值范圍:512~2048)
kp = kpg.genKeyPair(); //生成‘密匙對',其中包含著一個公匙和一個私匙的信息
public_key = kp.getPublic(); //獲得公匙
private_key = kp.getPrivate(); //獲得私匙
//保存公匙
public_file_out = new FileOutputStream(address + "/public_key.dat");
public_object_out = new ObjectOutputStream(public_file_out);
public_object_out.writeObject(public_key);
//保存私匙
private_file_out = new FileOutputStream(address + "/private_key.dat");
private_object_out = new ObjectOutputStream(private_file_out);
private_object_out.writeObject(private_key);
}
public static void main(String[] args) {
try {
new KeyRSA(1024, "c:/key_rsa");
}
catch (IOException ex) {
}
catch (NoSuchAlgorithmException ex) {
}
}
}
希望本文所述對大家的java程序設(shè)計(jì)有所幫助。
相關(guān)文章
SpringBoot項(xiàng)目中遇到的BUG問題及解決方法
這篇文章主要介紹了SpringBoot項(xiàng)目中遇到的BUG問題及解決方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
如何在spring事務(wù)提交之后進(jìn)行異步操作
這篇文章主要為大家介紹了如何在spring事務(wù)提交之后進(jìn)行異步操作,這些異步操作必須得在該事務(wù)成功提交后才執(zhí)行,回滾則不執(zhí)行,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2023-09-09
Java窗體動態(tài)加載磁盤文件的實(shí)現(xiàn)方法
這篇文章主要介紹了Java窗體動態(tài)加載磁盤文件的實(shí)現(xiàn)方法,需要的朋友可以參考下2014-03-03
Java中常用的數(shù)據(jù)庫連接池_動力節(jié)點(diǎn)Java學(xué)院整理
數(shù)據(jù)庫連接池負(fù)責(zé)分配、管理和釋放數(shù)據(jù)庫連接,它允許應(yīng)用程序重復(fù)使用一個現(xiàn)有的數(shù)據(jù)庫連接,而不是再重新建立一個;釋放空閑時間超過最大空閑時間的數(shù)據(jù)庫連接來避免因?yàn)闆]有釋放數(shù)據(jù)庫連接而引起的數(shù)據(jù)庫連接遺漏2017-08-08
Java實(shí)現(xiàn)統(tǒng)計(jì)在線人數(shù)功能的方法詳解
很多人在筆試或者面試中問到:現(xiàn)在要你實(shí)現(xiàn)一個統(tǒng)計(jì)在線人數(shù)的功能,你該怎么設(shè)計(jì)?不知道的朋友,這篇文章就來告訴你具體實(shí)現(xiàn)方法2022-08-08
JAVA 對數(shù)組進(jìn)行初始化填充的方法示例
這篇文章主要介紹了JAVA 對數(shù)組進(jìn)行初始化填充的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
SSM框架中entity mapper dao service controll
這篇文章主要介紹了SSM框架中entity mapper dao service controller層的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11

