【发布时间】:2014-02-25 01:44:15
【问题描述】:
我必须为项目加密用户 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,因为我很懒 ;) 这是一个聪明的解决方案吗?
【问题讨论】:
-
懒惰的人通常是优秀的程序员。祝你好运! ;)
-
SHA 是一种哈希算法,不是一种加密方法。
-
@Captain Obvlious:我知道,但我想把它变成一种加密方法。我问是因为我不确定这段代码的安全性。
-
你不能那样做。如果您需要加密,请使用加密。如果您需要哈希,请使用哈希。
-
专业的生产级加密经常出现问题(OpenSSL 版本升级到 1.0.0l 和 1.0.1f 是有原因的)。自制加密普遍地,总是从根本上被破坏。这比你想象的要难得多。魔鬼在细节中。这些细节让银行破产。
标签: c++ c qt encryption sha256