当前位置: 首页 > 面试题库 >

如何在MySQL的`encrypt`函数中使用`bcrypt`算法来验证密码?

洪哲彦
2023-03-14
问题内容

我已将$2y$10$zQaDT8hXM4pLmBdwN0xEseda/oKJAQKMKMzUrV8jbs6Epz28BXzBS密码(qwe)的值()加密。但是当我验证时,我得到了错误的结果哈希值。

mysql> select '$2y$10$zQaDT8hXM4pLmBdwN0xEseda/oKJAQKMKMzUrV8jbs6Epz28BXzBS' = encrypt('qwe', '$2y$10$zQaDT8hXM4pLmBdwN0xEseda/oKJAQKMKMzUrV8jbs6Epz28BXzBS') as is_valid; 
+----------+
| is_valid |
+----------+
|        0 |
+----------+

select encrypt('qwe', '$2y$10$zQaDT8hXM4pLmBdwN0xEseda/oKJAQKMKMzUrV8jbs6Epz28BXzBS') as hash;
+---------------+
| hash          |
+---------------+
| $2tBKnsbV2Szg |
+---------------+

md5 工作良好

mysql> select '$1$$.dCRcHz4ApIYzcA0g/qz3/' = encrypt('qwe', '$1$$.dCRcHz4ApIYzcA0g/qz3/') as is_valid; 
+----------+
| is_valid |
+----------+
|        1 |
+----------+

如何增加bcrypt对MySQL的支持?


问题答案:

你不能 MySQL ENCRYPT()函数使用操作系统的crypt()函数-如果您的操作系统不支持bcrypt哈希,则MySQL也将不支持它们。

另外,请勿使用MySQL
ENCRYPT()函数。正如ircmaxell指出的那样,传递给MySQL查询的任何数据都可能最终存储在服务器日志文件中,因此将其用于任何与密码相关的操作都是不安全的。



 类似资料:
  • 我正在用PHP编写一个基本的网站登录脚本(login_config.PHP)。 我的问题是:在用户安全/保护方面,我是否正确地实现了password_verify()函数? -注意:Post数据是从login.php发送的 代码(LOGIN_CONFIG.PHP): 编辑:我知道其他缺陷,请注意最初的问题。

  • 问题内容: 我感觉自己快要到了,但是对异步的不完全理解使我无法解决这个问题。我基本上是在尝试使用bcrypt哈希密码,并决定将hashPassword函数分离出来,以便可以在应用程序的其他部分中使用它。 不断返回undefined … 问题答案: 剂量等待因为不退诺。请使用以下方法,该方法将Promise包裹起来才能使用。

  • 我已经使用带有JPA的安全性实现了。我的所有RESTendpoint现在都可以验证客户端请求的头。密码的验证由框架完成。现在我需要能够验证一个密码与存储的密码哈希。 在默认配置下,用户密码以散列形式存储,并使用函数。如何检查给定的密码字符串是否与存储的bcrypt哈希值匹配? 来源:https://quarkus.io/guides/security-jpa

  • 本文向大家介绍使用自定义函数在MySQL中验证日期,包括了使用自定义函数在MySQL中验证日期的使用技巧和注意事项,需要的朋友参考一下 让我们创建一个自定义函数来验证MySQL中的日期- 情况1- 当参数为空值时,即要检查的日期不是实际日期。使用SELECT语句调用函数- 这将产生以下输出,即不是日期- 情况2- 当parameter为实际日期值时。使用SELECT语句调用函数- 这将产生以下输出

  • 我试图建立一个简单的iOS /Rails应用程序,在那里我可以创建一个用户,然后使用BCrypt对他们进行身份验证。我试图按照BCrypt的说明进行操作,但我的身份验证过程不起作用。非常新的轨道,所以我肯定我搞砸了一些简单的事情! 要创建新用户,请执行以下操作: 在users_controller.rb 在user.rb 在服务器上: 在2014-08-21 19:32:05-0500开始POST

  • 本文向大家介绍如何在PHP中使用AES加密算法加密数据,包括了如何在PHP中使用AES加密算法加密数据的使用技巧和注意事项,需要的朋友参考一下 在研究Discuz 的时候,发现Discuz有一套相当完美的加密算法(相对而言)。这个算法可以将数据加密后,储存起来,到需要用的时候,用之前加密的秘钥将之还原。 除了这个之外,还有AES这个算法能够将数据很好的加密起来,在传输过程中不容易被破解。 在PHP