2016-11-04 46 views
0

當ecryptfs等軟件使用AES時,會要求輸入用戶密碼(如「password123」)。如何使用用戶密碼進行aes加密?

AES算法本身不會調用用戶密碼。那麼「password123」會被扔進數學計算器?

我正在努力使用密碼來加密一些數據的C函數。我知道使用OpenSSL和aes密鑰的典型方式,但我不知道如何獲得集成的用戶密碼。

+0

我有一些使用SNMPv3的經驗,他們的RFC建議了一種派生密鑰的方法。它需要密碼,引擎ID,將它們混合在一起,混合起來,最後得到鑰匙。看看A.2.1和A.2.2節。所示的例子是針對MD5的,但是相同的概念適用於AES:https://tools.ietf.org/html/rfc3414#section-2.6 – yano

+3

AES是一種對稱密碼算法,不使用任何密鑰對;它使用一個密鑰或128,192或256位,作爲@bartonjs的答案可以從密碼派生。像RSA和ECIES這樣的非對稱密碼使用密鑰對(即使將它們視爲「鎖和密鑰」通常也會引起誤解)。 –

+0

@ dave_thompson_085我對這個評論太無知了。我不知道AES和RSA有什麼區別。我完成了這個項目的問題,我意識到我的方式錯誤大聲笑 –

回答

6

您需要使用密鑰導出函數(KDF)。基於密碼的密鑰推導函數2(PBKDF2)是當前最常用的方法。

OpenSSL可能暴露PBKDF2,它通常需要一個密碼和一個迭代計數(現代系統應該使用類似100000或更高的東西......啓動數字直到大約需要0.3秒)和一個輸出長度。它也可能需要散列函數,SHA-2系列(SHA256,SHA384,SHA512)中的某些內容將是一個很好的現代選擇。