mysql 最新的密码哈希算法/数据加密是啥?

Posted

技术标签:

【中文标题】mysql 最新的密码哈希算法/数据加密是啥?【英文标题】:What is the latest in password hash algorithm/data encryption for mysql?mysql 最新的密码哈希算法/数据加密是什么? 【发布时间】:2018-01-02 13:34:15 【问题描述】:

由于我对密码学知之甚少,我试图在某些vb.net winform 应用程序中找到散列用户密码的最佳方法;然后将其存储在在线mysqldb。 我找到了很多关于这个主题的帖子,但不知道哪一个是最好的方法。

我联系了this MSDN post,但仍然不确定我是否可以使用它。

我无法在哪里输入一些随机密钥,它是由函数自动生成的。

所以我的问题是,这是密码哈希的可靠函数吗? 有其他选择吗?

谢谢

代码:

进口系统 导入系统.IO 导入 System.Security.Cryptography Aes 类示例 公共共享子 Main() 尝试 Dim original As String = "这里有一些要加密的数据!" ' 创建一个新的 Aes 实例 ' 班级。这会生成一个新的密钥和初始化 ' 向量 (IV)。 使用 myAes 作为 Aes = Aes.Create() ' 将字符串加密为字节数组。 暗淡加密为 Byte() = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV) ' 将字节解密为字符串。 Dim 往返 As String = DecryptStringFromBytes_Aes(encrypted, myAes.Key, myAes.IV) '显示原始数据和解密数据。 Console.WriteLine("Original: 0", original) Console.WriteLine("往返:0", 往返) 结束使用 将 e 捕获为异常 Console.WriteLine("错误:0", e.Message) 结束尝试 结束子'主要 共享函数 EncryptStringToBytes_Aes(ByVal plainText As String, ByVal Key() As Byte, ByVal IV() As Byte) As Byte() ' 检查论点。 If plainText Is Nothing OrElse plainText.Length

【问题讨论】:

【参考方案1】:

不要加密密码,当攻击者得到数据库时,他也会得到加密密钥。仅使用散列函数是不够的,仅添加盐对提高安全性无济于事。使用随机盐在 HMAC 上迭代大约 100 毫秒,然后将盐与哈希一起保存。使用ehashPBKDF2Bcryptpasslib.hash 等函数或类似函数。关键是让攻击者花费大量时间通过蛮力寻找密码。

NIST 目前推荐使用PBKDF2 作为密码验证器。

见:

NIST Recommendation for Password-Based Key Derivation

NIST 特别出版物 800-63B:(Digital Identity Guidelines )

Toward Better Password Requirements 吉姆·芬顿

【讨论】:

非常感谢@zaph,如果您能在 vb.net 中发布一个实现链接,那就太好了。谢谢 .NET Rfc2898DeriveBytes,是 PBKDF2 只是 MS 喜欢添加混淆。

以上是关于mysql 最新的密码哈希算法/数据加密是啥?的主要内容,如果未能解决你的问题,请参考以下文章

哈希算法的应用举例

JAVA数据加密

JAVA数据加密

JAVA数据加密

安全技术2:用户密码及哈希算法

加密技术04-哈希算法-MD5原理