Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数据库中插入密码,与常规文本字段有什么区别?_Php_Mysql_Passwords - Fatal编程技术网

Php 在数据库中插入密码,与常规文本字段有什么区别?

Php 在数据库中插入密码,与常规文本字段有什么区别?,php,mysql,passwords,Php,Mysql,Passwords,我正在做一个注册表,我唯一的疑问是如何处理密码(如何将密码插入MySQL数据库)。我一点也不知道该怎么做,密码必须是什么类型的列,我是否必须以某种方式对它们进行加密,等等。你能提供一个基本的例子来解释一下,这样我就能做到吗?可以做到的一个方法是使用md5。您将密码转换为md5并将其放入数据库(md5加密是单向的)当用户再次登录时,您将再次转换填写的密码,并检查转换后的密码是否存在于您的数据库中(通常与用户名结合使用) 编辑 您可以使用以下命令将字符串转换为md5字符串: $converted_p

我正在做一个注册表,我唯一的疑问是如何处理密码(如何将密码插入MySQL数据库)。我一点也不知道该怎么做,密码必须是什么类型的列,我是否必须以某种方式对它们进行加密,等等。你能提供一个基本的例子来解释一下,这样我就能做到吗?

可以做到的一个方法是使用md5。您将密码转换为md5并将其放入数据库(md5加密是单向的)当用户再次登录时,您将再次转换填写的密码,并检查转换后的密码是否存在于您的数据库中(通常与用户名结合使用)

编辑

您可以使用以下命令将字符串转换为md5字符串:

$converted_pass = md5($unconverted_pass);

但是,在使用md5加密密码之前,需要向密码中添加一个所谓的salt密钥。这是一组字母/数字等。如果您每次都这样做,您将得到相同的结果,但会非常安全:)

您不应该存储密码,只存储密码哈希。 应在选择hasfunction之后选择数据库类型。
对于
md5
/
sha512
,如果保留十六进制表示,则为char(32)

查询是这样的:

"INSERT INTO users SET otherFields,pass_hash='".hashFunc($_POST['password']."';
其中hashFunc生成hash ex

function hashFunc($pass){
    $salt='something';
    md5($salt . $pass);
}
请阅读以下内容:


然后执行此操作:

安全保护密码的唯一方法是使用摩尔定律破坏哈希函数。使用

您不希望以明文形式存储密码。你甚至不想知道密码是什么。因此,在数据库中存储密码的哈希。当用户想要登录时,您对他尝试登录时使用的密码进行散列,然后将其与数据库中的散列进行比较。任何严重的密码存储系统都会进一步盐化散列,以防止对密码的彩虹表攻击(googlethat)。因为这是一个相当复杂的主题,而且您显然根本没有使用它的经验,所以我建议您使用hash和salt密码,而不必担心实现细节。phpass站点也有一些关于这个主题的很好的介绍性文章。这使它非常简单


至于数据库,这只是一个正常的
VARCHAR
字段,足够长,可以容纳哈希。

char\VARCHAR,应该进行哈希和盐析。如果不盐析,还可以存储为纯文本,这是真的。抱歉,忘记了=(你确实需要给它加盐。虽然这不是最好的答案,但它不值得投反对票。+1如果明文存储密码就像把门敞开着一样,MD5就像把门关上。它看起来很安全,直到小偷打开为止。停止推荐MD5。使用bcrypt。