標籤: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)說明如果沒有提供選擇性參數 min 和 max,mt_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() Function Compute字串的 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。