用Salt实现PHP双向加密
我正在尝试为我的用户密码创建一个双向加密算法。用Salt实现PHP双向加密,php,encryption,Php,Encryption,我正在尝试为我的用户密码创建一个双向加密算法。 我需要对其进行加密,但如果没有预设的加密通行证(我设置了什么)(salt?)原始密码无法解密听起来您希望使用单向加密哈希,而不是双向加密。以下是最佳做法密码存储和验证的一个很好的示例: 要保存它,请执行以下操作: $userPasswordInput=$\u POST['password'] $salt=//理想情况下,随机生成一个并将其保存到db,否则,使用保存到php文件的常量 $password=sha1($userPasswordInput
我需要对其进行加密,但如果没有预设的加密通行证(我设置了什么)(salt?)原始密码无法解密听起来您希望使用单向加密哈希,而不是双向加密。以下是最佳做法密码存储和验证的一个很好的示例: 要保存它,请执行以下操作: $userPasswordInput=$\u POST['password'] $salt=//理想情况下,随机生成一个并将其保存到db,否则,使用保存到php文件的常量 $password=sha1($userPasswordInput.$salt)
将$password(最好是$salt)保存到数据库。比较时,将salt和用户输入连接起来,sha1(或任何加密),然后将其与保存的(加密+salt)密码进行比较。听起来您希望使用单向加密哈希,而不是双向加密。以下是最佳做法密码存储和验证的一个很好的示例: 要保存它,请执行以下操作: $userPasswordInput=$\u POST['password'] $salt=//理想情况下,随机生成一个并将其保存到db,否则,使用保存到php文件的常量 $password=sha1($userPasswordInput.$salt)
将$password(最好是$salt)保存到数据库。比较时,将salt和用户输入连接起来,sha1(或任何加密),然后将其与保存的(加密+salt)密码进行比较。对于双向加密,这称为“密钥”,而不是“salt”。签出函数。对于双向加密,这称为“密钥”,而不是“salt”。签出函数。我是这样做的: 创建$user+$password
$saltedHash = md5($salt.$password);
现在您有了一个加密密码($saltedHash)来将其保存到数据库中
如果有人尝试登录,您将对输入的密码执行相同的操作,并将其与数据库中的密码进行比较。我是这样做的:
创建$user+$password
$saltedHash = md5($salt.$password);
现在您有了一个加密密码($saltedHash)来将其保存到数据库中
如果有人尝试登录,您可以对输入的密码执行相同的操作,并将其与数据库中的密码进行比较。最简单的方法(尽管在存储方面非常浪费)是生成一个随机字符串并将其与密码异或。(正如有人已经指出的,这叫做钥匙,而不是盐。)这叫做钥匙。顾名思义,不能对多个密码重复使用同一个密钥。最简单的方法(尽管在存储方面非常浪费)是生成一个随机字符串并将其与密码异或。(正如有人已经指出的,这叫做钥匙,而不是盐。)这叫做钥匙。顾名思义,您不能对多个密码重复使用同一密钥。我认为这对加密有效,但是。我不能用$salt解密它并找回密码??我想这可以用于加密,但是。我无法使用$salt解密它并获取密码??我将在多个运行PHP的服务器/站点上使用它。大多数都没有安装该扩展。更新每个服务器/站点也很难。我需要phpI内置的一些东西。我只是想找几个函数来编码和解码散列,我希望散列只有在使用正确的键(编码时输入的键)时才可解码。我将在运行PHP的多个服务器/站点上使用它。大多数都没有安装该扩展。更新每个服务器/站点也很难。我需要phpI内置的东西。我只是想找几个函数来编码和解码哈希,我希望哈希只有在使用正确的密钥(编码时输入的密钥)时才可解码。加密数据在使用同一密钥时始终可以解密。这就是问题所在。我猜你的意思是,加密数据在使用同一密钥时总是可以解密的。这就是问题所在。我想你的意思是。