Md5盐密码php

问题描述 投票:2回答:6

我知道关于此主题有很多问题,但我确实需要问这个。

今天我一直在使用md5加密密码。

所以我要做的是。

我有4种盐。 (它们根据用户值而变化)

  1. 从电子邮件ID开始,然后按md5键
  2. 通过电子邮件和ID代替其他职位
  3. 长字符串,先将其替换,然后将其md5转换
  4. 另一个长字符串,先对其进行替换,然后对其进行md5处理

然后我是md5 salt1和3以及带有salt 2和salt4的密码

此后,每当用户更改电子邮件或更改其ID时,我都必须自动更改密码。

你们对此有何看法?

php security encryption md5
6个回答
14
投票

没有。

MD5坏了。

将邮件地址用作盐是一个好主意。但不是使用md5。改为使用bcrypt,scrypt或pbkdf2。

除非您真的知道自己在做什么,并且不要相信我,否则不要发明自己的加密技术


6
投票

首先,让我们定义一些术语。

  • Encryption是对消息进行编码以便无法阅读时。加密涉及plaintextcipherkey。这就像将书(明文)放在锁着的房间(密码)中,该房间只能使用已知的工具(钥匙)打开。加密有很多种,但这只是一个简单的描述。加密是双向的,这意味着您可以对消息进行编码和解码。

  • [[[[Cryptographic散列是指获取任何类型的数据并为其生成固定大小值(通常称为hash或digest)的情况。加密哈希是单向的,这意味着您无法逆转该过程。

  • A

    salt是一个唯一的字符串或一组位,类似于nonce(一个唯一的数字,仅使用一次)。盐仅用于使其不可行

  • ,使饼干可以处理一系列哈希。不应将它们用作秘密(即像加密密钥一样)。人们通常谈论盐的随机性的唯一原因是因为他们想要生成唯一的盐(例如,如果随机性不够大,他们可能会碰撞到盐)。
好的,现在您应该如何哈希密码。

散列密码的相对安全的方法是简单地将唯一的散列添加到密码上,然后用密码保存密码:

$pass = 'this is my password'; $salt = uniqid('', true); $hash = sha1($pass . $salt); // INSERT INTO users ('hash', 'salt') VALUES ('$hash', '$salt') WHERE ...

如果您的网站没有从用户那里检索任何敏感数据,这是一种好的方法。

[如果您处理敏感数据,或者只是想确保自己正在做的一切都能确保资料安全,那么就有一个PHP函数可以为您执行哈希处理。它称为crypt()(阅读文档以了解其工作原理)。这是一个使用函数散列密码的示例:

crypt()

将安全地对密码进行哈希处理。

要意识到的是$pass = 'this is my password'; $salt = 'unique string'; $hash = crypt($password, '$2y$07$'.$salt.'$'); echo $hash; 功能比您能想到的任何东西都要安全得多(除非您是该领域的专家)。>>

在较新版本的PHP(5.5.0+)中,有一个crypt(),可以更轻松地对密码进行哈希处理。

还有各种哈希库。 password hashing API很受欢迎。


3
投票
不好,因为它使用MD5。

0
投票
嗯,

“ MD5坏了,坏了]


-2
投票
我个人不建议将用户ID和他的电子邮件包含在其密码的哈希中。您可以通过以下方式处理密码:

-2
投票
一种简单的方法是为每个用户生成一个随机盐,并像这样对您的密码进行哈希处理
© www.soinside.com 2019 - 2024. All rights reserved.