[英]Is it smart to encrypt data with SHA256 using counter mode?
我必須加密項目的用戶vpn密碼。 它們僅存儲在本地計算機上,但我要避免硬盤驅動器上的純文本密碼。 我重新加鹽並哈希用戶主密碼,以使用XTEA在計數器模式下對vpn密碼進行加密...然后,我認為使用sha256在某種計數器模式下對vpn密碼進行加密也是可行的。
偽C代碼:
string masterpasswd, txtdata;
uint32_t data[] = unicode(txtdata);
uint32_t key[8] = sha256(masterpasswd+salt);
for(int i=0;i<data_size;i++) {
encrypted[i] = data[i] ^ key[i];
key=sha256(key+i);
}
我不想使用openssl,因為我很懶;)這是一個明智的解決方案嗎?
否-對於密碼為“正確的電池”的用戶,當您的數據大於密鑰時會發生什么?
或
要么
更嚴重的是,不要這樣做。 您應該使用PBKDF2(對於OpenSSL,將PKCS5_PBKDF2_HMAC()與EVP_sha512()作為哈希函數-您將需要evp.h和sha.h)從主密碼和salt派生所需大小的加密密鑰,並且然后使用OpenSSL實際上使用ecb模式以外的方式進行加密。
您甚至可以更加懶惰,並將現有類用於Qt Simple Crypt :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.