【问题标题】:PHP crypt() function returns the same encrypted string everytimePHP crypt() 函数每次返回相同的加密字符串
【发布时间】:2013-11-27 08:02:50
【问题描述】:

我正在使用 PHP 进行加密,并在使用 SALT 时发现了 crypt() 的这个错误。

这就是我使用它的方式。

echo crypt('hellow@stg', 'azraar'); //azbFcR.LdN/SM

echo crypt('hellow@stg1', 'azraar'); //azbFcR.LdN/SM

echo crypt('hellow@stg0', 'azraar'); //azbFcR.LdN/SM

echo crypt('hellow@stg2', 'azraar'); //azbFcR.LdN/SM

如您所见,我使用的 SALT 是 azraar,每次打印 azbFcR.LdN/SM

链接到crypt() doc,http://php.net/manual/en/function.crypt.php

我对 PHP 的这种行为感到困惑。很奇怪吗?

【问题讨论】:

  • 请阅读精美的手册。
  • ...你甚至链接到它,你只需要阅读它。

标签: php encryption


【解决方案1】:

http://php.net/manual/en/function.crypt.php:

基于标准 DES 的 crypt() 将 salt 作为输出的前两个字符返回。它也只使用 str 的前八个字符,因此以相同八个字符开头的较长字符串将生成相同的结果(当使用相同的 salt 时)。

【讨论】:

  • 另外补充一点:如果您想要更好的哈希,请使用不同格式的盐,例如 $2y$10$usesomesillystringforsalt$ 来获取 Blowfish 算法。
  • 谢谢,那么最喜欢与 crypt 一起使用的是什么?河豚是最好的吗?
  • 是否经常使用相同的盐?
  • @mazraara 如果是关于 密码散列,那么 Blowfish 是目前最推荐的选项。但是每个密码都需要一个随机盐!这是必须的!请参阅php.net/password_hash 以获得完全用于此目的的用户友好包装器。按照链接到userland implementation for PHP
  • @mazraara 不,这不好。那不是盐,那是“胡椒”,与盐的目标不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多