【问题标题】:How to generate a pin code in Symfony如何在 Symfony 中生成密码
【发布时间】:2015-05-06 00:42:19
【问题描述】:

我现在正在开发一个 symfony2 网络应用程序,我需要自动生成由 6 个字母数字字符组成的密码,例如:

14gkf8 kfgh88

此代码将通过邮件发送给用户,这就是他将如何连接到平台的方式。 任何人都知道如何制作它,或者可能有现成的工具来做它?谢谢

【问题讨论】:

    标签: security symfony


    【解决方案1】:

    您可以使用以下代码生成随机代码:

    substr(bin2hex(openssl_random_pseudo_bytes(100)), 0, 6)
    

    Online demo.

    openssl_random_pseudo_bytes() 会生成随机二进制数据,bin2hex() 会将此二进制数据转换为十六进制数据(例如5c3aa…e55),substr(…, 0, 6) 将只保留前 6 个字符。由于十六进制使用从 09af 的值,每个位置有 16 个不同的字符可用,因此它提供了 16^6 = 16,777,216 的可能性(09 和 @987654336 @ 到 z36^6 = 2,176,782,336,只有 ± 130 倍)。如果用户不需要键入密钥,您可以使用更多字符,例如使用 12 个字符,您有更多可能性:16^12 = 2,814×10¹⁴

    【讨论】:

    • 感谢@A.L .. 我会从 6 个字符开始,以方便用户使用,而不是有一天我会添加一些字符
    【解决方案2】:

    您可以使用uniqid() 生成唯一的字母数字字符串

    【讨论】:

    • 这似乎很危险,因为结果是可预测的(如 PHP documentation 中所述)并且 OP 需要一个代码来识别用户。几秒钟后调用此代码的示例:5548f22923c9f, 5548f229b1852, ... 这不是随机的。
    • 在这种情况下很好地抓住 A.L,我认为他应该像你发布的那样做一些加密功能或像这样:stackoverflow.com/questions/2565478/…
    猜你喜欢
    • 2018-08-14
    • 2011-08-09
    • 2012-08-14
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2011-04-20
    相关资源
    最近更新 更多