|
1
24
MySQL的文档 PASSWORD()
阅读“ You're Probably Storing Passwords Incorrectly “获取有关散列和存储密码的更好建议。
我为MySQL提供了一个补丁来支持
更新:
MySQL 5.5.8于2010年12月发布,该版本包含对
|
|
|
2
10
如果您使用数据库函数散列密码,则根据定义,密码必须未经加密地到达数据库:因此,我更愿意在更接近“源”的位置(即在前端应用程序中)执行此操作,这样您就不会传递暴露的信息。 |
|
|
3
6
当然,所有的密码都应该用盐来储存(为了更隐蔽)。例子:
更好的方法是在密码到达数据库之前对其进行散列(使用salt)。例子:
|
|
|
4
2
介绍 在不涉及太多技术和数学细节的情况下,解释一下两者之间的区别可能会有用 , ,及 腌制 . 加密 加密已经存在很长时间了。埃及人用它来创造神秘和娱乐,罗马人用它来传递秘密信息。当你加密一个密码时,你会应用某种算法将其置乱。应用钥匙,解读它。
别喝这酒。 =Qba'g qevax gur jvar。 服务器对数据进行加密,通过安全的SSL连接将其发送到您的浏览器,浏览器对数据进行解密,以便您可以读取数据。 散列与加密的不同之处在于,数据一旦编码,就无法解码。嗯,至少要做到这一点非常困难。与加密不同,输出总是固定长度的,具体取决于您使用的算法。 使用我们之前的短语和我们得到的MD5算法。。。 =b290557177ec5dd7098d1de84616dd04 如果我们尝试一个较长的短语。。。 请不要喝这酒,它尝起来糟透了。 您将看到结果都是相同的长度。这意味着,多个输入可以产生相同的输出,称为 碰撞 .
散列函数还可以用来测试信息是否被篡改。发送电子邮件时,您首先共享一个只有您和收件人知道的秘密值。在发送电子邮件之前,请使用您的机密值对其进行签名并生成哈希值。然后将明文电子邮件(不带机密值)与哈希值一起发送。然后,你的朋友可以执行相同的过程,如果哈希值相同,那么他们就知道你的消息没有被篡改。这种技术称为消息身份验证码或基于哈希的消息身份验证码。 散列算法的一个重要因素是它们只能以一种方式工作。计算出原始值的唯一方法是使用暴力。尝试多个值以查看它们是否生成相同的哈希。 这对于通常很短且使用常见单词的密码尤其有问题。现代计算机不需要很长时间就可以通过一个大字典(或使用现有的彩虹表)计算出每个常用密码的哈希结果。
腌制 除了堵塞动脉外,盐还会堵塞任何试图破解散列密码的人。它们的工作原理是在输入的末尾添加一个额外的秘密值,从而延长原始密码的长度。 假设你的密码是rocky,salt值是i.love.salt。散列值将由这两个加在一起的rockyi.love.salt组成。这为那些使用常用词作为密码的人提供了一些保护。然而,如果有人知道你使用的盐分值,那么他们只是将它添加到他们在攻击中尝试的每个字典单词的末尾(或开头)。 为了使这更困难,您可以使用随机密码,每个密码一个。显然,它需要存储在与用户帐户匹配的数据库中,但它确实使暴力攻击变得更加困难。最后,您可以从多个部分创建salt,您可以使用当前日期时间、用户名、密码、随机值或所有这些的组合。 |
|
|
Bard.Mus · 迁移后的数据库字符集环境 1 年前 |
|
Efannnnnn · 将Id数据存储到任何页面 1 年前 |
|
|
yooooo · 用于在块中删除的存储过程-LOOP未执行 1 年前 |
|
John Beasley · 更新一定数量记录的连续日期 1 年前 |
|
|
ColinM · MySQL以前的结果查询返回不正确的值 1 年前 |
|
Sergey_Z · MySQL只需无条件连接2个表和交叉连接 1 年前 |