亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何存儲密鑰對并在其他類中使用它進行解密?

如何存儲密鑰對并在其他類中使用它進行解密?

慕蓋茨4494581 2023-07-19 15:48:11
我正在嘗試加密通過郵遞員發送到@PostMapping方法的字符串值@RestController并將它們存儲在數據庫中。這是我用于加密字符串的代碼        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");        keyPairGenerator.initialize(1024);        keyPair = keyPairGenerator.generateKeyPair();                   Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");        cipher.init(Cipher.ENCRYPT_MODE, keyPair.getPublic());        encrypted = cipher.doFinal(this.toBeEncrypted.getBytes("UTF-8"));然后我將此encrypted變量存儲到數據庫中。我有另一個類可以解密存儲在數據庫中的字符串,但它不會解密加密的值,我知道這是因為它沒有正確的密鑰來解密。我嘗試創建KeyPair一個靜態變量,以便我的兩個自定義類,StringEncryptor并StringDecryptor使用相同的密鑰對對象,但是當服務器重新啟動時,它會停止正常工作,所以我相信當服務器重新啟動時,我用來加密/解密的靜態密鑰對對象被重新初始化,因此這不是鎖定 String 變量的鍵。我不確定,但我認為我應該存儲鎖定 String 對象的密鑰,這樣我就可以稍后在其他類中再次使用它來解鎖加密的字符串?;ヂ摼W上的大多數教程都是關于密碼算法的,其他教程則以相同的方法解密加密文件,這在現實世界的項目中完全無用,這不是我想要的。我需要知道如何存儲、存儲在哪里以及如何再次檢索這些密鑰以進行解密。提前致謝。
查看完整描述

1 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

密鑰管理本身就是一個完整的主題。我希望您已經發現,將密鑰保存在 RAM 中并不是一種選擇。

通常,您會嘗試將密鑰放入密鑰庫中。該密鑰存儲可以由硬件支持。在這種情況下,實際的私鑰操作也需要在硬件中進行,否則您必須取出密鑰。在最簡單的形式中,可以簡單地從受密碼保護的密鑰存儲中檢索密鑰(這意味著最新版本的 Java 的 PKCS#12 兼容文件)?,F在您可以存儲密鑰,但問題是您必須在重新啟動時輸入密碼。

此外,通常 JavaKeyStore實現還需要與私鑰一起提供證書,因此您必須為私鑰生成或請求證書。有許多關于如何從密鑰對創建自簽名證書的教程。這是因為 Java 嚴重依賴 PKIX,即根據美國 ANS(I) 標準的公鑰基礎設施,這些標準均以字母 X 開頭(例如 X.509,它定義了常見的 TLS / CMS 證書的外觀)。

好的,現在您知道應該看什么方向了,恐怕您必須從這里開始對如何管理密鑰進行一些研究。


查看完整回答
反對 回復 2023-07-19
  • 1 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號