【问题标题】:how to use md5 encryption for password field in mysql database in coldfusion如何在coldfusion中对mysql数据库中的密码字段使用md5加密
【发布时间】:2010-12-22 08:43:59
【问题描述】:

我正在实现一个应用程序,我必须在其中将加密密码插入 MySQL 数据库。然后在 ColdFusion 中使用 md5 加密 从数据库中检索解密后的密码。

如何在 ColdFusion 中对 MySQL 数据库使用 md5 加密?

【问题讨论】:

  • 使用普通的 md5 是不好的。至少使用盐,最好使用密钥派生函数,如 PBKDF2
  • @CodeInChaos,PBKDF2 用于创建派生密钥。一个盐!=一个键。盐不应该以任何方式预测。换句话说,基于密码的密钥派生函数不适合密码散列。
  • @Jacco 您通常将密码和盐放入 KDF。而且我不明白为什么 KDF 不适合密码散列。所以不要调用 MD5(password+salt) 你调用 SomePBKDF(password,salt)
  • @Lea 最大的原因是它很快。因此,攻击者可以在短时间内散列许多潜在的密码。因此,推荐使用 pbkdf2 或 bcrypt 之类的构造,您可以在其中传入一个迭代计数参数来确定函数的运行速度。
  • @Lea 假设攻击者获得了对服务器的完全访问权限。因此他知道你的代码和你的数据库内容。盐的每个用户部分通常与哈希一起存储在数据库中。并且每个应用程序部分(如果完全使用)存储了某种配置文件,如果攻击者对服务器具有完全访问权限而不仅仅是数据库,则可以获取该配置文件。

标签: mysql security coldfusion-8 password-hash


【解决方案1】:

md5 是one way hash,不能反转。

您不应该在数据库中存储可解密的密码。仅存储 md5 哈希。当用户尝试登录时,生成纯文本密码的 md5 哈希。然后将其与存储在 db 中的 md5 哈希进行比较。

【讨论】:

  • 在哈希中使用随机盐。
【解决方案2】:

您可以使用 mysql 本身提供的 md5 功能。

但是,它是单向算法。

你不能解密它。您将需要使用给定密码的 md5 对存储的密码。

更多信息,请查看,

http://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html#function_md5

【讨论】:

  • 来自 mysql 文档:“注意密码或作为加密函数参数提供的其他敏感值以明文形式发送到 MySQL 服务器,除非使用 SSL 连接。此外,这些值将出现在任何 MySQL它们写入的日志。为了避免这些类型的暴露,应用程序可以在将敏感值发送到服务器之前在客户端加密它们。同样的注意事项适用于加密密钥。为了避免暴露这些,应用程序可以使用存储过程来加密并在服务器端解密值。”
猜你喜欢
  • 2016-01-14
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
相关资源
最近更新 更多