SHA256 / SHA512:密码哈希和盐析的MySQL代码

时间:2015-02-12 04:57:29

标签: mysql sql hash salt sha256

我需要一些帮助来了解如何使用SHA256或SHA512为SQL中的用户散列和加密密码。我想每个用户我都要生成不同的盐?如何在登录和更新时检查密码以及MySQL中的现有密码?

我用这个资源做了一些关于实现的研究,但它只显示了Java代码,我该如何在MySQL中做到这一点?这会在存储过程中完成吗?

由于

1 个答案:

答案 0 :(得分:0)

我对安全方面没有权限,但是使用SQL Server可以通过以下方式处理不同的部分:

  

对于哈希:

您可以根据您的要求使用 [HASHBYTES] 和任一种SHA-2算法。 HASHBYTES('SHA2_256', @Password); 请注意,此函数仅需8000字节,并且可以在varchar,nvarchar或varbinary上运行,这在您的情况下应该足够,但以防万一。

如果输入约束对您不起作用,您还可以在.NET中编写 SQL CLR 函数来进行散列。

  

对于盐:

使用 GUIDs ,使用GUID的一部分可能无法提供盐所需的熵,因此我建议使用整个字符串。

或使用 RANDOM() 函数生成一个带有逻辑位的唯一字母数字字符串。

  

过程:

在散列Salt之前将Password添加到(HASHBYTES('SHA2_256', @Password + Salt);,并在注册过程中为用户存储Hashed outputSalt

在随后的登录尝试中,添加user-entered password with the salt并获取Hashed输出,然后将其与存储哈希值进行比较。如果值匹配,那么用户是合法的,否则不是。