【发布时间】:2026-01-23 07:30:01
【问题描述】:
我必须加密数据库中的多个数据(无密码) 我会用盐来防止彩虹攻击。 我正在生成这样的盐:
mysalt = UNHEX(SHA2(RAND(),512))
RAND()(mysql 函数)是足够的熵源吗?我应该让我所有的盐值彼此不同,但如果我的 PRNG 有太多碰撞,情况并非如此。它是否取决于数据库中的记录数?如果是这种情况,RAND() 的限制是什么?如果上述方法不好,哪种方法可能是一种很好的替代技术?最后,加盐密码也有用吗?
【问题讨论】:
-
RAND() 产生 FLOAT 输出(4 字节)。您想使用 SHA-512(64 字节)。不合逻辑。
-
@Akina 我在书中看到了这个生成盐的例子。您的评论很有道理,但是我已经考虑过了,但是我忽略了它,因为它有效。我不知道,但可能是数字会自动转换为字符串:dev.mysql.com/doc/refman/8.0/en/type-conversion.html
-
我不知道你所说的“无密码”是什么意思。您是否想生成密钥而不是盐?
-
@TangentiallyPerpendicular 呃,不,API 相关的问题属于这里,至少正式。 Umbert,请注意,您可能需要查看 PBKDF2 或类似的密码哈希。不要只使用盐和 SHA-256 或其他非密码哈希来保护您的密码。
标签: mysql sql security encryption cryptography