【发布时间】:2010-12-18 12:19:07
【问题描述】:
我正在尝试使用 Perl 验证加盐密码,但无法解压。
我有一个加盐哈希密码,例如对于 SHA256:SSHA256 = SHA256('password' + 'salt') + 'salt' Base64 编码得到 ' {SSHA256}eje4XIkY6sGakInA+loqtNzj+QUo3N7sEIsj3fNge5lzYWx0'。
我将此字符串存储在我的用户数据库中。当用户登录时,需要将盐与哈希分开,以使用盐对提供的密码进行哈希处理,并将结果与从数据库中检索到的结果进行比较。这就是我卡住的地方。我似乎没有正确的解包模板将哈希(8 位二进制,固定长度,在本例中为 32 字节)与盐(8 位二进制,可变长度)分开。
我尝试过类似my ($hash, $salt) = unpack('N32 N*', $data);
但这似乎行不通。
我的问题是:我怎样才能解压这个哈希(在它被 Base64 解码之后)以得到一个固定长度的哈希和另一个变量的可变长度盐?
【问题讨论】:
标签: perl hash passwords unpack