码迷,mamicode.com
首页 > 其他好文 > 详细

ishare加密算法规则备忘

时间:2014-07-31 20:09:57      阅读:387      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   使用   ar   div   算法   时间   

$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)。
例子
在本例中,我们会返回一些随机数:
<?php
echo(mt_rand());
echo(mt_rand());
echo(mt_rand(10,100));
?>
输出类似:
3150906288
513289678
35

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() 函数(请在字符串函数参考中查找)。
例子
<?php
echo 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;
  }
?>
输出:
f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
Hello 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。

 

ishare加密算法规则备忘,布布扣,bubuko.com

ishare加密算法规则备忘

标签:style   blog   color   使用   ar   div   算法   时间   

原文地址:http://www.cnblogs.com/huidaoli/p/3881286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!