PHP算法——生成唯一字符串】的更多相关文章

经常遇到忘记密码的情况,点击一下忘记密码,然后收到更改密码的链接,连接中往往都会有一段很长而且很乱的字符串.试想一下,如果出现了重复的字符串,那岂不是把别人的密码给重置了? 所以产生唯一数对于网站的安全性很重要. 目前PHP能产生唯一数的方法可以采用散列值.随机数.时间等方法,下面是我自己测试的唯一数,个人推荐GUID. 方法一: <?PHP $str = uniqid(mt_rand(),1); echo 'sha1: ',sha1($str); echo '<br>'; echo '…
C#版本 /// <summary> /// 根据twitter的snowflake算法生成唯一ID /// snowflake算法 64 位 /// 0---0000000000 0000000000 0000000000 0000000000 0 --- 00000 ---00000 ---000000000000 /// 第一位为未使用(实际上也可作为long的符号位),接下来的41位为毫秒级时间,然后5位datacenter标识位,5位机器ID(并不算标识符,实际是为线程标识),然后1…
C# 版算法: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Demo { /// <summary> /// 根据twitter的snowflake算法生成唯一ID /// snowflake算法 64 位 /// 0---0000000000 0000000000 0000000000…
1 Python使用UUID库生成唯一ID UUID是128位的全局唯一标识符,通常由32字节的字符串表示,保证时间和空间的唯一性 通过MAC地址.时间戳.命名空间.随机数.伪随机数来保证生成ID的唯一性 用法: uuid1()--基于时间戳 uuid3()--基于名字的MD5散列值 通过计算名字和命名空间的MD5散列值得到,保证了同一命名空间中不同名字的唯一性, 和不同命名空间的唯一性,但同一命名空间的同一名字生成相同的uuid. uuid4()--基于随机数 由伪随机数得到,有一定的重复概率…
前言:最近需要做一套CMS系统,由于功能比较单一,而且要求灵活,所以放弃了WP这样的成熟系统,自己做一套相对简单一点的.文章的详情页URL想要做成url伪静态的格式即xxx.html 其中xxx考虑过直接用自增主键,但是感觉这样有点暴露文章数量,有同学说可以把初始值设高一点,可是还是可以通过ID差算出一段时间内的文章数量,所以需要一种可以生成唯一ID的算法. 考虑过的方法有 直接用时间戳,或者以此衍生的一系列方法 Mysql自带的uuid 以上两种方法都可以查到就不多做解释了 最终选择了Twit…
$units = array(); //循环生成好多个唯一字符串 for($i=0;$i<1000000;$i++){ $units[]=md5(uniqid(md5(microtime(true)),true)); } //获得一个数组中重复值 $values = array_count_values($units); $duplicates = array(); //循环这个重复值数组,看看是否有重复 foreach($values as $k=>$v){ if($v>1){ $du…
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址.纳秒级时间.芯片ID码和许多可能的数字.由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得…
转自:https://segmentfault.com/a/1190000007769660 考虑过的方法有 直接用时间戳,或者以此衍生的一系列方法 Mysql自带的uuid 以上两种方法都可以查到就不多做解释了 最终选择了Twitter的SnowFlake算法 这个算法的好处很简单可以在每秒产生约400W个不同的16位数字ID(10进制) 原理很简单 ID由64bit组成 其中 第一个bit空缺 41bit用于存放毫秒级时间戳 10bit用于存放机器id 12bit用于存放自增ID 除了最高位…
//根据ID计算唯一邀请码 public static function createCode($Id){ static $sourceString = [ 0,1,2,3,4,5,6,7,8,9,10, 'a','b','c','d','e','f', 'g','h','i','j','k','l', 'm','n','o','p','q','r', 's','t','u','v','w','x', 'y','z' ]; $num = $Id; $code = ''; while($num)…
说明:生成随机字符串用到的方法有 mt_rand() 生成唯一字符串用到的方法有 md5(),uniqid(),microtime() 代码: <?php /* * 生成随机字符串 * @param int $length 生成随机字符串的长度 * @param string $char 组成随机字符串的字符串 * @return string $string 生成的随机字符串 */ function str_rand($length = 32, $char = '0123456789abcde…