MySQL PHP:当我自动添加用户时,如何加密他们的密码


MySQL PHP: When I automatically add users, how to encrypt their passwords

前言:制作一个简单的电子商务网站。用户注册时,将通过注册页面自动添加。我想自动加密他们的密码。

问题:MySQL网站显示了如何使用AES_ECRYPT,但它似乎是针对终端类型的设置,管理员会手动执行此操作。

我想添加一些代码来注册.php使其自动加密。

谢谢!

正如其他答案所述,您不应该加密密码。它们应该被散列。

他们不应该使用MD5SHA

你应该使用bcrypt

不应使用加密,因为您永远不希望能够解密值并查看密码,因为黑客也可以这样做。

哈希

就像单向加密,您创建一个哈希,登录时,您对他们在登录时输入的密码进行哈希处理,并将其与存储的哈希进行比较。

MD5SHA不再适合这样做,因为计算机越来越快,它们可以以每秒60 +十亿的速度散列字典单词和常用密码,以尝试获取密码。

这个话题在StackOverflow上已经被讨论得死死的。

请参阅如何使用bcrypt如何使用 bcrypt 在 PHP 中散列密码?

这是为了解释为什么:PHP密码的安全哈希和盐

您将希望对密码进行哈希处理而不是加密。可以使用密钥撤消加密。用户输入的密码称为明文密码,明文密码不应写入或存储在任何地方。

当某些东西被哈希时,

它是单向翻译,哈希不容易被翻译回其明文形式,所以当有人输入他们的密码时,你对其进行哈希处理,然后将其与存储在数据库中的哈希密码进行比较。

一些哈希算法是MD5,SHA1等 - 在PHP中,您可以使用crypt函数对密码进行哈希处理。我应该注意,MD5 和 SHA1 不再像它们非常快那样安全,这意味着它们可以相当快地被暴力破解(还有一些数据库,您可以在其中相当快地对哈希进行逆向工程)。你应该使用PHP的crypt函数。

tl;dr - 哈希密码,不要加密它们(为了安全,尤其是电子商务)。