四时宝库

程序员的知识宝库

appId和appSecret生成算法(appid和appsecret设计)

<?php

$appId = AppUtils::getAppId();

$appSecret = AppUtils::getAppSecret();

var_dump($appId,$appSecret);

class AppUtils {


const PATTERN = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLOMNOPQRSTUVWXYZ1234567890';


/**

* @Description:

* 短8位UUID思想其实借鉴微博短域名的生成方式,但是其重复概率过高,而且每次生成4个,需要随机选取一个。

* 本算法利用62个可打印字符,通过随机生成32位UUID,由于UUID都为十六进制,所以将UUID分成8组,每4个为一组,然后通过模62操作,结果作为索引取出字符,

* 这样重复率大大降低。

* 经测试,在生成一千万个数据也没有出现重复,完全满足大部分需求。

*

*/

public static function getAppId() {

$shortBuffer = [];

$uuid = self::uuid();

for ($i = 0; $i < 16; $i++) {

$str = substr($uuid,$i * 2, 2);

$x = hexdec($str);

$shortBuffer[] = self::PATTERN[$x % 0x3E];

}


$shortBuffer = implode('',$shortBuffer);

return $shortBuffer;


}


public static function uuid()

{

$chars = md5(uniqid(mt_rand(), true));

return $chars ;

}


/**

* 生成APP Secret

*/

public static function getAppSecret() {


$string = '';

for($i=0;$i<50;$i++)

{

$string .= self::PATTERN[mt_rand(0,35)]; //生成长度50的随机数

}

$appSecret = md5(substr($string,8,32));

return $appSecret;


}


}


每天记录一点点

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接