Md5盐密码php
我知道关于这个问题有很多问题,但我真的需要问这个问题 今天我一直在用md5加密密码 所以我所做的就是 我有四种盐。(它们根据用户值而变化)Md5盐密码php,php,security,encryption,md5,Php,Security,Encryption,Md5,我知道关于这个问题有很多问题,但我真的需要问这个问题 今天我一直在用md5加密密码 所以我所做的就是 我有四种盐。(它们根据用户值而变化) 从电子邮件id和substr,然后md5将其删除 来自电子邮件和id substr其他职位 一个长字符串,substr它,然后md5它 另一个长字符串,substr它,然后md5它 然后我使用md5 salt1和salt3以及salt2和salt4的密码 在此之后,每当用户更改其电子邮件或id时,我必须自动更改密码 你们怎么看 它不好,因为它使用MD5 MD
你们怎么看 它不好,因为它使用MD5 MD5是一种非常快速的操作。它可以在图形卡硬件上每秒执行数十亿次。将其用于任何与密码相关的事情被认为是不好的做法
使用bcrypt。使用随机盐。使用即将发布的PHP API对密码进行哈希、验证和重新哈希。这个include文件为从PHP5.3.7开始的版本实现它:我个人不建议将用户id和他的电子邮件包含在他的密码散列中。 您可以通过以下方式处理密码:
- 基于用户注册时生成的随机字符串的每个用户动态salt
- 在盐的一部分前面加上前缀,在密码周围加上另一部分
- 双md5:md5(md5($password))
- 等等
- 什么都没有
MD5坏了,坏了
使用邮件地址作为salt是一个好主意。但使用md5并非如此。请改用bcrypt、scrypt或pbkdf2
不要发明你自己的加密,除非你真的知道你在做什么,相信我,你不会一个简单的方法是为每个用户生成一个随机的salt,然后像这样散列你的密码
public function encodePassword( $raw, $salt ) {
return hash('sha256', $salt.$raw);
}
对于高安全性哈希,您可以查看此链接,该链接解释了如何实现PBKDF2:
首先,让我们定义几个术语
- 加密是指对邮件进行编码,使其无法读取。加密涉及a、a和a。这就像把一本书(明文)放在一个锁着的房间里(密码),只能用已知的工具(钥匙)打开。加密有很多种,但这只是一个简单的描述。加密是双向的,这意味着您可以对消息进行编码和解码
- 加密哈希是指获取任何类型的数据并为其生成固定大小的值(通常称为哈希或摘要)。加密哈希是单向的,这意味着您无法反转该过程
- salt是一个唯一的字符串或一组位,类似于A(只使用一次的唯一数字)。盐只会使破解者无法处理哈希列表。它们不应被用作秘密(即,类似于加密密钥)。当谈到盐时,人们通常谈论随机性的唯一原因是因为他们想要产生一种独特的盐(例如,如果随机性不够大,他们可能会得到碰撞盐)
$pass = 'this is my password';
$salt = uniqid('', true);
$hash = sha1($pass . $salt);
// INSERT INTO users ('hash', 'salt') VALUES ('$hash', '$salt') WHERE ...
如果你的网站没有从用户那里检索到任何敏感数据,那么这是一个不错的方法 如果您处理敏感数据,或者如果您只是想确保尽一切努力确保内容安全,那么有一个PHP函数可以为您进行哈希处理。它被称为(阅读文档了解其工作原理)。下面是如何使用函数散列密码的示例:
$pass = 'this is my password';
$salt = 'unique string';
$hash = crypt($password, '$2y$07$'.$salt.'$');
echo $hash;
这将安全地散列密码
需要意识到的是,crypt()
函数比你能想到的任何东西都要安全得多(除非你是这方面的专家)
在较新版本的PHP(5.5.0+)中,有一种更简单的密码散列方法
还有各种散列库。是一个很受欢迎的版本。嗯,“MD5坏了”有点夸张。即使它可以被大量的CPU强制使用,它也不是“坏的”,对于许多涉及散列的事情来说,它仍然是一个非常有用的算法
所以“MD5不应该用于密码加密”对我来说听起来好多了
当使用PHP时,一个简单而安全的选择是依赖于(本机生成随机salt)和函数
优点是加密算法将随每个新的PHP版本透明地更新(目前,
PASSWORD\u DEFAULT
设置为bcrypt
,但如果bcrypt被“破坏”,则可以设置为更新的算法),这使得任何使用这些函数的代码都具有相当的弹性。不要使用自己的加密方案。使用经过良好测试和分析的系统,例如,也可以提供不同数量的炮弹。你不妨将盐通过搅拌器:)不,对不起。使用MD5是不好的。把它翻一番,你将一事无成。盐只需要是独一无二的,随机性是无关紧要的;盐是如何使用的,差别不大;而双重散列会让事情变得不那么安全。是的,但用户询问的是md5,我个人不建议使用它,但如果他没有安装PHP 5.3+或mcrypt,他至少可以使用SHA1…md5在您的答案中-这可以被视为一个建议。你没有建议任何其他标有“更好”的东西。@Sverri M.Olsen:你说它不太安全,不是我。你在传播你无法证明的信息。你为什么认为这是正确的?如果有人写了一些没有证据的东西,这并不意味着你应该相信它。安全性是一个可怕的精确的东西:如果有什么东西被陈述,它可能是,也应该被证明,否则它就是胡说八道。所以它能做的就是