2016-11-21 116 views
0

我有,我想作爲一個鍵使用5個不同的字符串。它們是:如何墊中使用的短字符串作爲AES密鑰?

asuspcgame, dragonZ, whiterice, ball, document 

我想用EVP OpenSSL的這樣執行的加密:https://www.openssl.org/docs/man1.0.2/crypto/EVP_EncryptInit.html

然而,我意識到示例是使用具有固定大小密鑰(16個字符AES_128)。

unsigned char key[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; 
EVP_EncryptInit_ex(&ctx, EVP_idea_cbc(), NULL, key, iv); 

我的問題是:我如何讓我的字符串始終具有固定大小的16個字符?

我沒有看到EVP的任何功能可以讓我的字符串變成一個固定大小的鍵。

+1

現代派生函數是[HKDF](https://tools.ietf.org/html/rfc5869)。一旦你提取和展開,貫穿東西的內存輸出硬,像Scrypt,使暴力破解更痛苦。你也可以通過PBKDF2和朋友來運行它。 – jww

回答

2

不要使用字符串作爲加密密鑰,而是使用密碼派生函數(例如PBKDF2),其輪數會使該函數花費大約100毫秒。這將產生用作密鑰的字節輸出。

對於IV使用的加密僞隨機數生成器,並與IV前綴加密的數據,沒有必要保持IV祕密。

或更好的是,使用RNCryptor;它爲您完成了所有這些工作,並添加了加密認證,版本控制並且是跨平臺的。

相關問題