導航:首頁 > 編程語言 > 私鑰加密公鑰Java

私鑰加密公鑰Java

發布時間:2025-07-23 01:13:02

Ⅰ https是如何工作的

加密(Cipher)

java 1.2時,引入JCR(java 加密擴展)系統,用來負責java中的密鑰和證書。

我們都知道,如果我們想要加密或解密一些信息,我們必須要有一個密鑰。這好比你想要開門或者鎖門,必須要有鑰匙一樣。

在java中,密鑰由KeyGenerator或KeyPairGenerator生成。前者用來生成對稱密鑰,後者用來生成非對稱密鑰。

上面這張圖片已經清楚的展示了HTTPS工作的流程。

1.[Server]生成一對密鑰:公鑰和私鑰,我們稱之為「KeyPub」,「KeyPri」
2.[Server]服務端將公鑰(KeyPub)發送到客戶端
3.[Client]生成一個對稱密鑰(姑且稱之為key2),然後用key2加密數據。
4.[Client]使用公鑰(KeyPub)加密key2.這時,key2是安全的,因為只有服務度有私鑰KeyPri
5.[Client]發送用key2加密後的信息及用KeyPub加密過的key2到服務端
6.[Server]服務端使用KeyPri解密得到加密過的key2,得到真正的key2
7.[Server]使用key2解密消息正文。這樣,數據就被安全的傳輸到了服務端。

結論

由於對稱加密比非對稱加密快,https決定使用對稱加密來加密數據,使用非對稱加密對稱加密生成的密鑰,以確保安全

Ⅱ Java生成RSA非對稱型加密的公鑰和私鑰

非對稱型加密非常適合多個客戶端和伺服器之間的秘密通訊 客戶端使用同一個公鑰將明文加密 而這個公鑰不能逆向的解密 密文發送到伺服器後有伺服器端用私鑰解密 這樣就做到了明文的加密傳送

非對稱型加密也有它先天的缺點 加密 解密速度慢制約了它的發揮 如果你有大量的文字需要加密傳送 建議你通過非對稱型加密來把對稱型 密鑰 分發到客戶端 及時更新對稱型 密鑰

import java io *;

import java security *;

import javax crypto *;

import javax crypto spec *;

/**

* <p>Title: RSA非對稱型加密的公鑰和私鑰</p>

* <p>Description: </p>

* <p>Copyright: Copyright (c) </p>

* <p>Company: </p>

* @author not attributable

* @version

*/

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;

/**

* 構造函數

* @param in 指定密匙長度(取值范圍 ~ )

* @throws NoSuchAlgorithmException 異常

*/

public KeyRSA(int in String address) throws NoSuchAlgorithmException FileNotFoundException IOException

{

kpg = KeyPairGenerator getInstance( RSA ); //創建 密匙對 生成器

kpg initialize(in); //指定密匙長度(取值范圍 ~ )

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 {

System out println( 私匙和公匙保存到C盤下的文件中 );

new KeyRSA( c:/ );

}

catch (IOException ex) {

}

catch (NoSuchAlgorithmException ex) {

}

}

lishixin/Article/program/Java/hx/201311/26592

Ⅲ java 中的Cipher類RSA方式能不能用私鑰加密公鑰解密,完整解釋下

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
//把第二個參數改為 key.getPrivate()
cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
byte[] cipherText = cipher.doFinal("Message".getBytes("UTF8"));
System.out.println(new String(cipherText, "UTF8"));
//把第二個參數改為key.getPublic()
cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println(new String(newPlainText, "UTF8"));

正常的用公鑰加密私鑰解密就是這個過程,如果按私鑰加密公鑰解密,只要按備注改2個參數就可以。

但是我要提醒樓主,你要公鑰解密,公鑰是公開的,相當於任何人都查到公鑰可以解密。
你是想做簽名是吧。

Ⅳ JAVA寫RSA加密,公鑰私鑰都是一樣的,為什麼每次加密的結果不一樣

有可能是當前的環境字元編碼不一樣,例如加密一邊用的是GBK,解密那邊用的是UTF-8編碼,所以結果就會不同步。

Ⅳ JAVA寫RSA加密,公鑰私鑰都是一樣的,為什麼每次加密的結果不一樣

因為rsa是非對稱加密,它使用的是隨機大素數的抽取,每次隨機生成的,所以每次加密的結果不可能一樣

閱讀全文

與私鑰加密公鑰Java相關的資料

熱點內容
農信卡app密碼忘記了怎麼辦 瀏覽:843
文明史pdf 瀏覽:585
妻友app蘋果怎麼下載 瀏覽:141
win10系統如何遠程桌面連接到伺服器 瀏覽:277
編譯原理張晶是哪的人 瀏覽:271
資深程序員怎麼做 瀏覽:401
程序員那麼可愛三年前發生了什麼 瀏覽:243
跑腿app源碼上傳 瀏覽:266
html5簡單小游戲源碼 瀏覽:22
在轉轉app怎麼領福利 瀏覽:354
app的雙重認證怎麼解除 瀏覽:220
加密貨幣價格動盪的6個原因 瀏覽:181
站內搜索引擎源碼 瀏覽:410
sqlite常用命令 瀏覽:104
演算法導論第三版pdf中文 瀏覽:968
伺服器如何分成多台的軟體 瀏覽:778
如何讓安卓手機有一閃一閃的 瀏覽:470
把文件夾偽裝成硬碟 瀏覽:694
怎麼加密ip連接 瀏覽:10
python蟒蛇編碼翻譯 瀏覽:473