创建一个不包含';不要在PHP中包含它的盐

创建一个不包含';不要在PHP中包含它的盐,php,encryption,hash,Php,Encryption,Hash,对于用户验证电子邮件,我希望向我的用户发送一封电子邮件,其中包括基于用户id的安全哈希和随机生成的salt。然而,php的所有函数都是针对密码散列的,因此将salt存储在散列中以进行密码验证。因为我打算向用户发送这个散列,所以没有必要这样做 我知道md5函数不包括salt,但我相信md5哈希是不安全的 有没有办法在php中散列(最好是用一行代码)一个字符串并返回一个不含盐的纯散列?我不完全了解您的协议,但是如果您只是在php中寻找一个安全的散列,那么请与algo=“sha256”一起使用 确保您

对于用户验证电子邮件,我希望向我的用户发送一封电子邮件,其中包括基于用户id的安全哈希和随机生成的salt。然而,php的所有函数都是针对密码散列的,因此将salt存储在散列中以进行密码验证。因为我打算向用户发送这个散列,所以没有必要这样做

我知道md5函数不包括salt,但我相信md5哈希是不安全的


有没有办法在php中散列(最好是用一行代码)一个字符串并返回一个不含盐的纯散列?

我不完全了解您的协议,但是如果您只是在php中寻找一个安全的散列,那么请与
algo=“sha256”
一起使用


确保您了解使用PHP散列字符串时使用的是哪个(默认)字符编码。

我不完全了解您的协议,但如果您只是在PHP中寻找安全的散列,请与
algo=“sha256”
一起使用


使用PHP散列字符串时,请确保您了解使用的是哪个(默认)字符编码。

您可以向任何散列添加salt。它只是一个字符串,添加到正在散列的内容中。但是,这里使用的最佳方法是随机字符串,它与服务器上的电子邮件地址一起存储。当用户尝试验证时,将与随机字符串进行比较。这样,就不必担心有人仅仅根据对电子邮件地址的了解来生成散列。

您可以在任何散列中添加盐。它只是一个字符串,添加到正在散列的内容中。但是,这里使用的最佳方法是随机字符串,它与服务器上的电子邮件地址一起存储。当用户尝试验证时,将与随机字符串进行比较。这样,就不必担心有人仅仅根据对电子邮件地址的了解来生成散列。

首先使用base64_encode进行散列,然后再使用md5对结果值进行散列。这将返回安全哈希结果。

首先使用base64_encode进行哈希,然后使用md5再次对结果值进行哈希。这将返回安全的哈希结果。

据我所知,这根本不是一个salt,相反,您希望使用一个可以隐藏用户ID的密钥。用户ID是您稍后要验证的内容。为了能够验证这个用户ID,您必须将密钥存储在某个地方

现在,如果您必须存储此密钥,那么您可以使用更好的方法。生成一个随机令牌,该令牌不是从任何现有数据中派生的(并且不能泄漏任何内容),并将该令牌的哈希值与userid一起存储在数据库中。您发送给用户的原始令牌。一旦用户单击链接,您就可以使用存储的哈希验证令牌


因为随机令牌是一个非常强的“密码”(大约20个随机选择的字符),所以在没有salt的情况下计算简单的散列(如SHA-256)是绝对安全的。这允许在数据库中搜索哈希标记。

据我所知,这根本不是一个salt,而是您希望使用一个可以隐藏用户ID的键。用户ID是您稍后要验证的内容。为了能够验证这个用户ID,您必须将密钥存储在某个地方

现在,如果您必须存储此密钥,那么您可以使用更好的方法。生成一个随机令牌,该令牌不是从任何现有数据中派生的(并且不能泄漏任何内容),并将该令牌的哈希值与userid一起存储在数据库中。您发送给用户的原始令牌。一旦用户单击链接,您就可以使用存储的哈希验证令牌

因为随机令牌是一个非常强的“密码”(大约20个随机选择的字符),所以在没有salt的情况下计算简单的散列(如SHA-256)是绝对安全的。这允许在数据库中搜索哈希标记