首页 > 代码库 > ishare加密算法规则备忘

ishare加密算法规则备忘

$salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36);$fields = array(‘salt‘ => $salt,‘password‘ => $this->getPasswordEncoder()->encodePassword($password, $salt),);

1、mt_rand();

PHP mt_rand() 函数PHP Math 函数定义和用法mt_rand() 使用 Mersenne Twister 算法返回随机整数。语法mt_rand(min,max)说明如果没有提供可选参数 minmaxmt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。例如想要 5 到 15(包括 5 和 15)之间的随机数,用 mt_rand(5, 15)。很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且很慢。PHP 的 rand() 函数默认使用 libc 随机数发生器。mt_rand() 函数是非正式用来替换它的。该函数用了 Mersenne Twister 中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比 libc 提供的 rand() 快四倍。提示和注释注释:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现在已自动完成。注释:在 3.0.7 之前的版本中,max 的含义是 range 。要在这些版本中得到和上例相同 5 到 15 的随机数,简短的例子是 mt_rand (5, 11)。例子在本例中,我们会返回一些随机数:<?phpecho(mt_rand());echo(mt_rand());echo(mt_rand(10,100));?>输出类似:315090628851328967835

2、uniqid(mt_rand(), true)

PHP uniqid() 函数PHP 杂项函数定义和用法uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID。语法uniqid(prefix,more_entropy)参数    描述prefix    可选。为 ID 规定前缀。如果两个脚本恰好在相同的微秒生成 ID,该参数很有用。more_entropy    可选。规定位于返回值末尾的更多的熵。说明如果 prefix 参数为空,则返回的字符串有 13 个字符串长。如果 more_entropy 参数设置为 true,则是 23 个字符串长。如果 more_entropy 参数设置为 true,则在返回值的末尾添加额外的熵(使用组合线形同余数生成程序),这样可以结果的唯一性更好。返回值以字符串的形式返回唯一标识符。提示和注释注释:由于基于系统时间,通过该函数生成的 ID 不是最佳的。如需生成绝对唯一的 ID,请使用 md5() 函数(请在字符串函数参考中查找)。例子<?phpecho uniqid();?>输出类似:4415297e3af8c

 

3、sha1(uniqid(mt_rand(), true))

PHP sha1() 函数PHP String 函数定义和用法sha1() 函数计算字符串的 SHA-1 散列。sha1() 函数使用美国 Secure Hash 算法 1。如果成功,则返回所计算的 SHA-1 散列,如果失败,则返回 false。语法sha1(string,raw)参数    描述string    必需。规定要计算的字符串。raw    可选。规定十六进制或二进制输出格式:TRUE - 原始 20 字符二进制格式FALSE - 默认。40 字符十六进制数注释:该参数是 PHP 5.0 中添加的。例子例子 1<?php$str = ‘Hello‘;echo sha1($str);?>输出:f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0例子 2在本例中,我们将输出 sha1() 的结果,然后对其测试:<?php$str = ‘Hello‘;echo sha1($str);if (sha1($str) == ‘f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0‘)  {  echo "<br />Hello world!";  exit;  }?>输出:f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0Hello world!

4、base_convert(sha1(uniqid(mt_rand(), true)), 16, 36)

PHP base_convert() 函数PHP Math 函数定义和用法base_convert() 函数在任意进制之间转换数字。语法base_convert(number,frombase,tobase)参数    描述number    必需。原始值。frombase    必需。数字原来的进制。tobase    必需。要转换的进制。说明返回一个字符串,包含 number 以 tobase 进制的表示。number 本身的进制由 frombase 指定。frombase 和 tobase 都只能在 2 和 36 之间(包括 2 和 36)。高于十进制的数字用字母 a-z 表示,例如 a 表示 10,b 表示 11 以及 z 表示 35。例子 1把八进制数转换为十进制数:<?php$oct = "0031";$dec = base_convert($oct,8,10);echo "八进制的 $oct 等于十进制的 $dec。";?>输出:八进制的 0031 等于十进制的 25。例子 2把八进制数转换为十六进制数:<?php$oct = "364";$hex = base_convert($oct,8,16);echo "八进制的 $oct 等于十六进制的 $hex。";?>输出:八进制的 364 等于十六进制的 f4。