【发布时间】:2015-05-06 00:42:19
【问题描述】:
我现在正在开发一个 symfony2 网络应用程序,我需要自动生成由 6 个字母数字字符组成的密码,例如:
14gkf8 kfgh88
此代码将通过邮件发送给用户,这就是他将如何连接到平台的方式。 任何人都知道如何制作它,或者可能有现成的工具来做它?谢谢
【问题讨论】:
我现在正在开发一个 symfony2 网络应用程序,我需要自动生成由 6 个字母数字字符组成的密码,例如:
14gkf8 kfgh88
此代码将通过邮件发送给用户,这就是他将如何连接到平台的方式。 任何人都知道如何制作它,或者可能有现成的工具来做它?谢谢
【问题讨论】:
您可以使用以下代码生成随机代码:
substr(bin2hex(openssl_random_pseudo_bytes(100)), 0, 6)
openssl_random_pseudo_bytes() 会生成随机二进制数据,bin2hex() 会将此二进制数据转换为十六进制数据(例如5c3aa…e55),substr(…, 0, 6) 将只保留前 6 个字符。由于十六进制使用从 0 到 9 和 a 到 f 的值,每个位置有 16 个不同的字符可用,因此它提供了 16^6 = 16,777,216 的可能性(0 到 9 和 @987654336 @ 到 z 是 36^6 = 2,176,782,336,只有 ± 130 倍)。如果用户不需要键入密钥,您可以使用更多字符,例如使用 12 个字符,您有更多可能性:16^12 = 2,814×10¹⁴。
【讨论】:
您可以使用uniqid() 生成唯一的字母数字字符串
【讨论】:
5548f22923c9f, 5548f229b1852, ... 这不是随机的。