ishare密碼編譯演算法規則備忘

來源:互聯網
上載者:User

標籤: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。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.