【问题标题】:PHP Two Way encryption with Salt使用 Salt 的 PHP 双向加密
【发布时间】:2011-04-15 02:26:25
【问题描述】:

我正在尝试为我的用户密码创建一种双向加密算法。 我需要对其进行加密但没有预先设置的加密通行证(我设置了什么)(盐?)原始密码无法解密

【问题讨论】:

标签: php encryption


【解决方案1】:

对于双向加密,这称为“密钥”,而不是“盐”。查看mcrypt 函数。

【讨论】:

  • 我将在多个运行 PHP 的服务器/站点上使用它。大多数没有安装该扩展。也很难更新每个服务器/站点。
  • 我需要php内置的东西
  • 我只是在寻找一些可用于编码和解码散列的函数,我希望散列只有在使用正确的键(编码时输入的键)时才可解码
【解决方案2】:

听起来您想使用单向加密哈希而不是双向加密。以下是最佳实践密码存储和验证的一个很好的示例:

保存:

$userPasswordInput = $_POST['password'];

$salt = // 理想情况下,随机生成一个并将其保存到数据库中,否则,使用保存到 php 文件中的常量

$password = sha1($userPasswordInput . $salt);

将 $password(最好是 $salt)保存到数据库。比较时,将 salt 和用户输入连接起来,对其进行 sha1(或任何加密),然后将其与保存的(加密 + salted)密码进行比较。

【讨论】:

  • 我认为这适用于加密,但是。我无法解密它并使用 $salt 找回密码??
【解决方案3】:

我是这样做的:

创建一个 $user + $password

$saltedHash = md5($salt.$password);

现在您有一个加密密码 ($saltedHash) 可以将其保存到数据库中。

如果有人尝试登录,你输入的密码也一样,并与数据库中的密码进行比较。

【讨论】:

    【解决方案4】:

    最简单的方法(虽然在存储方面非常浪费)是生成一个随机字符串并将其与密码进行异或。 (正如有人已经指出的那样,这称为密钥,而不是盐。)这称为one-time pad。顾名思义,您不能为多个密码重复使用相同的密钥。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 2014-03-26
      • 2012-03-04
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 2011-04-23
      相关资源
      最近更新 更多