2015-12-06 97 views
0
的密鑰

的正確方法我使用下面庫做客戶端加密 http://bitwiseshiftleft.github.io/sjcl/什麼是加密AES

它正常工作,用戶定義密碼和密鑰,我加密對客戶的一切在推送到服務器之前。

我想讓用戶交互更容易,目前用戶既忘記密鑰又忘記密碼,我想用用戶定義的密碼加密密鑰並將其連接到密文。對此有什麼好的方法?

什麼是加密使用用戶定義的密碼密鑰,用密文相連來的好方法?

+2

一般來說,您使用「密鑰擴展」將密碼轉換爲密鑰,然後使用它來加密保存的密鑰。 – chrylis

回答

1

您可以使用鍵伸縮爲chrylis表示。在這種情況下,您可以使用PBKDF2,bcrypt,scrypt或Argon2從密碼生成密鑰。您需要配置工作因子並用密文保存salt。

後你產生這樣一個關鍵你可以用(加密)與它的另一個隨機數據的關鍵。您也可以直接使用它或與KBFDF(如HKDF)一起使用以生成數據密鑰。

+0

我對此很新,所以請原諒我的無知。 PBKDF2是否考慮了關鍵拉伸?目前我正在使用用戶定義的密碼,然後生成一個隨機鹽,然後對用戶定義的密碼運行Pbkdf2 1000 x以生成256位密鑰。我的問題是,我如何安全地將密鑰與我的密文連接,然後解密以解密密文?我或多或少地在做這件事,我只是想知道一個很好的方法來消除記憶256密鑰的必要性。 bitwiseshiftleft.github.io/sjcl/demo/ – vick

+0

你爲什麼要隱藏祕密密鑰?您只需要通過再次運行PBKDF2來重新生成它。請注意,在最低端考慮1000次迭代,50K會更好。或者你當然可以使用非常安全的密碼。 –

+0

PBKDF2會重新生成完全相同的密鑰嗎?我的印象是它有一些隨機性,會產生一個不同的關鍵。使用與密鑰相同的密碼,salt和IV作爲密鑰是否安全?我一直聽到,不要多次使用同一個IV。 – vick