我有一个场景,我需要散列消息来执行查找,其中明文消息未存储在数据库中。相反,生成的哈希存储在数据库中。请注意,该消息不是密码。
我的选择是:
HmacSHA512(message, secret)
VS
SHA512(message + pepper) where pepper = secret
我的想法是Hmac的消息身份验证代码属性在这里确实不适用,因为哈希是在计算并立即用于对数据库的查询中使用的。这就是为什么我对使用HmacSHA512而不是SHA512犹豫不决。但是,Hmac专门针对存在应用程序机密的情况而设计,而不是存储在数据库中,这正是我正在寻找的。 p>
我所知道的一个小差异如下。假设,
HmacSHA512("AA1", "2") != HmacSHA512("AA", "12");
SHA512("AA1" + "2") == SHA512("AA" + "12");
这很明显,因为它只是SHA512中的字符串连接,但是,它是一个很小的区别。对此的任何其他见解将是有帮助的。提前谢谢!