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
应用程序中找到散列用户密码的最佳方法;然后将其存储在在线mysql
db。
我找到了很多关于这个主题的帖子,但不知道哪一个是最好的方法。
我联系了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 毫秒,然后将盐与哈希一起保存。使用ehash
、PBKDF2
、Bcrypt
、passlib.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 最新的密码哈希算法/数据加密是啥?的主要内容,如果未能解决你的问题,请参考以下文章