作爲加密和保存數據的一部分,我們使用openssl的AES算法生成KEY。Keystore - 從命令行進入Keystore的自定義SecretKey條目
openssl enc -aes-256-cbc -P -nosalt
Openssl的已產生KEY & IV值,它們被存儲在純文本文件。因爲將密鑰存儲在普通文檔中是不安全的標準,所以將其移至Keystore。
因此,我們通過執行下面的命令使用keytool生成了一個Keystore。
keytool -genseckey -keyalg AES -alias aesstore -keysize 256 -keypass changeit -storetype jceks -keystore hello.jceks -storepass changeit
這個密鑰庫擁有一個隨機祕密密鑰。所以,我們希望將我們的KEY & IV值移動到密鑰庫,以便我們可以從那裏獲取並使用它們來加密數據。我在下面找到了將定製KEY值存儲到Keystore的鏈接,但沒有找到IV值。
http://java.dzone.com/articles/secret-key-import-java
因此,如果任何人對如何既KEY & IV值存儲到密鑰庫中。任何想法,請大家分享。
此外,我們正在尋找一種方法,我們可以從命令行本身將定製密鑰傳遞給密鑰庫。
在此先感謝。
你好,有人在家嗎? – 2014-10-03 13:42:51
感謝您的回覆。我瞭解到,IV是關鍵存儲實施中不斷變化的價值。目前,我們面臨的問題是,我們一直在使用持續的KEY和IV值來加密和保存數據。如果我們將KEY移到Keystore,那麼我們加密的數據與以前的同一個字符串的加密數據不匹配,因爲IV值不同。因此,爲了解決這個問題,我認爲唯一的解決方案是,從Keystore中提取密鑰並在持久IV的幫助下對數據進行加密。請建議。 – user3119077 2014-10-06 06:47:39
你應該改變你的協議,並最終存儲一個密鑰。但是現在你可以從中解脫出來並將IV存儲爲例如AES-128密鑰。然後你用'aesKey.getEncoded()'返回字節。 AES密鑰由完全隨機的數據組成,只會在輸入時返回字節。 – 2014-10-06 07:29:30