用PHP-MYSQL加密

用PHP-MYSQL加密,php,mysql,security,encryption,web,Php,Mysql,Security,Encryption,Web,当用户在我的网站上注册时,我使用加密功能(数据库是mysql)将他们的密码像这样插入数据库 当我匹配它时,当他们登录时,我使用这个查询,但它似乎不起作用 $qry="SELECT * FROM members WHERE login='$login' AND passwd = ENCRYPT('$password')"; 为什么这不起作用?加密密码并不容易,您不应该询问堆栈溢出问题 本文讨论了正确的方法: 不要白手起家,你必须有一个行业标准和强大的方法,如scrypt、bcrypt或pbkdf

当用户在我的网站上注册时,我使用加密功能(数据库是mysql)将他们的密码像这样插入数据库

当我匹配它时,当他们登录时,我使用这个查询,但它似乎不起作用

$qry="SELECT * FROM members WHERE login='$login' AND passwd = ENCRYPT('$password')";

为什么这不起作用?

加密密码并不容易,您不应该询问堆栈溢出问题

本文讨论了正确的方法:

不要白手起家,你必须有一个行业标准和强大的方法,如scrypt、bcrypt或pbkdf2,在使用它们之前,你需要研究它们是如何工作的,并确保你正确地实施它们

任何关于实现的问题都应该在security.stackexchange.com上询问,因为堆栈溢出实际上不是安全问题的地方


到目前为止,您发布的技术是完全错误的。它无法修复,您需要从头开始,以不同的方式进行操作。

加密密码并不容易,您不应该询问堆栈溢出问题

本文讨论了正确的方法:

不要白手起家,你必须有一个行业标准和强大的方法,如scrypt、bcrypt或pbkdf2,在使用它们之前,你需要研究它们是如何工作的,并确保你正确地实施它们

任何关于实现的问题都应该在security.stackexchange.com上询问,因为堆栈溢出实际上不是安全问题的地方


到目前为止,您发布的技术是完全错误的。它无法修复,您需要从头开始,以不同的方式进行操作。

加密密码并不容易,您不应该询问堆栈溢出问题

本文讨论了正确的方法:

不要白手起家,你必须有一个行业标准和强大的方法,如scrypt、bcrypt或pbkdf2,在使用它们之前,你需要研究它们是如何工作的,并确保你正确地实施它们

任何关于实现的问题都应该在security.stackexchange.com上询问,因为堆栈溢出实际上不是安全问题的地方


到目前为止,您发布的技术是完全错误的。它无法修复,您需要从头开始,以不同的方式进行操作。

加密密码并不容易,您不应该询问堆栈溢出问题

本文讨论了正确的方法:

不要白手起家,你必须有一个行业标准和强大的方法,如scrypt、bcrypt或pbkdf2,在使用它们之前,你需要研究它们是如何工作的,并确保你正确地实施它们

任何关于实现的问题都应该在security.stackexchange.com上询问,因为堆栈溢出实际上不是安全问题的地方

到目前为止,您发布的技术是完全错误的。它无法修复,您需要从头开始,以不同的方式进行操作。

根据文档

加密(str[,salt])

使用Unix crypt()系统调用加密str并返回二进制字符串。salt参数必须是至少包含两个字符的字符串,否则结果将为NULL。如果没有给出salt参数,则使用随机值

然后,您会得到相同的结果,因为每次请求函数encrypt时,都会使用一个新的salt字符串,您可能需要在尝试之前设置salt。例如,当我试着用盐时,我得到了我想要的结果

SELECT ENCRYPT(  'hello',  'stringSalt' ) =  'stOIgrUfQZeZ.'
但是,如果我不用盐绳

select encrypt('hello');

1st result: qn8VHq6xLWgQc
2nd result: 6odpFDddcEdoA
两种结果完全不同

最后,如果crypt函数不在您的操作系统上,那么结果将为null

(感谢@Fred ii的注释)

根据文档

加密(str[,salt])

使用Unix crypt()系统调用加密str并返回二进制字符串。salt参数必须是至少包含两个字符的字符串,否则结果将为NULL。如果没有给出salt参数,则使用随机值

然后,您会得到相同的结果,因为每次请求函数encrypt时,都会使用一个新的salt字符串,您可能需要在尝试之前设置salt。例如,当我试着用盐时,我得到了我想要的结果

SELECT ENCRYPT(  'hello',  'stringSalt' ) =  'stOIgrUfQZeZ.'
但是,如果我不用盐绳

select encrypt('hello');

1st result: qn8VHq6xLWgQc
2nd result: 6odpFDddcEdoA
两种结果完全不同

最后,如果crypt函数不在您的操作系统上,那么结果将为null

(感谢@Fred ii的注释)

根据文档

加密(str[,salt])

使用Unix crypt()系统调用加密str并返回二进制字符串。salt参数必须是至少包含两个字符的字符串,否则结果将为NULL。如果没有给出salt参数,则使用随机值

然后,您会得到相同的结果,因为每次请求函数encrypt时,都会使用一个新的salt字符串,您可能需要在尝试之前设置salt。例如,当我试着用盐时,我得到了我想要的结果

SELECT ENCRYPT(  'hello',  'stringSalt' ) =  'stOIgrUfQZeZ.'
但是,如果我不用盐绳

select encrypt('hello');

1st result: qn8VHq6xLWgQc
2nd result: 6odpFDddcEdoA
两种结果完全不同

最后,如果crypt函数不在您的操作系统上,那么结果将为null

(感谢@Fred ii的注释)

根据文档

加密(str[,salt])

使用Unix crypt()系统调用加密str并返回二进制字符串。salt参数必须是至少包含两个字符的字符串,否则结果将为NULL。如果没有给出salt参数,则使用随机值

然后,您会得到相同的结果,因为每次请求函数encrypt时,都会使用一个新的salt字符串,您可能需要在尝试之前设置salt。例如,当我试着用盐时,我得到了我想要的结果

SELECT ENCRYPT(  'hello',  'stringSalt' ) =  'stOIgrUfQZeZ.'
但是,如果我不用盐绳

select encrypt('hello');

1st result: qn8VHq6xLWgQc
2nd result: 6odpFDddcEdoA
两种结果完全不同