Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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_Sha1_Password Encryption - Fatal编程技术网

如何在php中将随机数添加到字符串中(加密密码)

如何在php中将随机数添加到字符串中(加密密码),php,mysql,sha1,password-encryption,Php,Mysql,Sha1,Password Encryption,我正在学习PHP,我发现我们需要保护数据库中用户的密码,例如: 在我们的数据库中,我们有密码“BonjourLaFrance”,但我们必须使用sha1来获得类似的密码:“31d9f30301559bf1154acc72425724635c9f3af1” 但是有一些网站可以解密sha1或md5函数,所以我们必须添加一个随机数。 但是如果我做了sha1($password),rand(),我们只需要删除最后的数字就可以得到正确的密码,对吗 我想把函数的结果 RAND()>代码>在这个字符串的中间,到

我正在学习PHP,我发现我们需要保护数据库中用户的密码,例如:

在我们的数据库中,我们有密码“BonjourLaFrance”,但我们必须使用
sha1
来获得类似的密码:“31d9f30301559bf1154acc72425724635c9f3af1”

但是有一些网站可以解密
sha1
md5
函数,所以我们必须添加一个随机数。 但是如果我做了sha1($password),rand(),我们只需要删除最后的数字就可以得到正确的密码,对吗

我想把函数的结果<代码> RAND()>代码>在这个字符串的中间,到第五位(对于函数<代码> RAND)(/CUL> >返回555):

31d9f30301559bf1154acc72425724635c9f3af1

31d9f55530301559bf1154acc72425724635c9f3af1

我该怎么做?这是正确的加密技术吗?还有其他更简单或更安全的技术吗


提前谢谢你

您可以使用PHP内置的
密码\u散列
函数

下面是一个例子:

$password = "yourpassword";
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
要检查密码是否正确,请执行以下操作:

if(password_verify($password, $hashed_password)){
    // the password is correct
}

查看更多示例。

您想过使用PHP库吗?为什么要使用SHA1来存储密码?嘿,你也可以将它们存储为纯文本。你最好使用
password\u hash()
来做这个,真的。顺便说一句,你不想加密,你想散列。这里有两种不同的动物。很清楚,这叫做散列密码,而不是加密。加密是可以解密的,散列是单向的。@GrumpyCrouton我想你是想在OP的问题下发表你的评论,而不是回答。是吗?@grumpycruton啊,好吧。谢谢你的澄清,我到现在还不知道;-)