Php 生成将激活密钥另存为产品密钥
我试图创建一个函数,它创建一个随机字符串。此字符串应仅由字母、大写字母和数字组成。它将用于激活产品。因此,用户必须将其键入文本字段。 到目前为止,我发现了以下功能:Php 生成将激活密钥另存为产品密钥,php,security,random,Php,Security,Random,我试图创建一个函数,它创建一个随机字符串。此字符串应仅由字母、大写字母和数字组成。它将用于激活产品。因此,用户必须将其键入文本字段。 到目前为止,我发现了以下功能: function random_str($length, $keyspace = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'){ $pieces = []; $max = mb_strlen($keyspace, '8bit') - 1; for ($i = 0; $i < $
function random_str($length, $keyspace = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'){
$pieces = [];
$max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) {
$pieces []= $keyspace[random_int(0, $max)];
}
return implode('', $pieces);
}
我对随机函数没有那么多经验。那么,有什么需要改进的吗?或者您会建议使用不同的函数吗?要生成一个加密安全的随机字符串(我建议将其作为激活密钥),我宁愿使用openssl_random_pseudo_bytes 您可以在中找到文档和一些有用的信息,例如,如何获取包含0-9A-Z字符的随机字符串,而不仅仅是0-9A-F 从PHP7.0开始,您还可以使用,这也是加密安全的。使用rand函数而不是“random\u int” 使用PHP函数uniqid;,专业提示:也可以在末尾添加一个大约8位数的随机数,然后根据您的具体要求,按照您的意愿进行编码
function random_str($length, $keyspace =
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'){
$pieces = [];
$max = mb_strlen($keyspace, '8bit') - 1;
for ($i = 0; $i < $length; ++$i) {
$pieces []= $keyspace[rand(0, $max)];
}
return implode('', $pieces);
}
echo random_str('50');
// Output //
P7V55MYPQJGRNQ8W0VW7TRKBDK2B7NXWUT20F0P6J5Y7W63X20