代码之家  ›  专栏  ›  技术社区  ›  Zabs

哪种是在PHP中创建加密唯一令牌的最安全方法[closed]

  •  1
  • Zabs  · 技术社区  · 10 年前

    我已经完成了这项工作,我只是想要一些关于创建令牌(用于API)的最安全选项的建议,他们中的任何一个会有任何问题吗?

    选项A:

    $token = bin2hex(openssl_random_pseudo_bytes(16));
    

    或选项B:

    // $username - unique username for this user
    $token = hash('sha512', sha1($username.time().rand(1000, 9999)));
    
    1 回复  |  直到 10 年前
        1
  •  3
  •   Bob Brown    10 年前

    虽然这个问题离题了,但很有趣。

    我的答案是:选项A。

    选项B至少包含一个可预测值$username。这个 time() 价值可能是可预测的,并且 rand() 如果可以猜到种子,则可以预测。

    看看这个: https://crackstation.net/hashing-security.htm

    编辑后补充道:当然,如果令牌不必保密,它不会有任何区别。您可以只使用用户名。