免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
PHP的加密偽隨機(jī)數(shù)生成器的使用

PHP的加密偽隨機(jī)數(shù)生成器的使用

今天我們來介紹的是 PHP 中的加密偽隨機(jī)數(shù)生成器(CSPRNG 擴(kuò)展)。隨機(jī)數(shù)的生成其實(shí)非常簡單,使用 rand() 或者 mt_rand() 函數(shù)就可以了,但是我們今天說的這個則是使用了更復(fù)雜算法的一套隨機(jī)數(shù)生成器。rand() 已經(jīng)不是很推薦使用了,mt_rand() 的生成速度更快一些,也是現(xiàn)在的主流函數(shù),而加密的偽隨機(jī)數(shù)生成函數(shù)則是密碼安全的,速度會比 mt_rand() 略慢一點(diǎn)。它需要依賴操作系統(tǒng)的一些函數(shù),這個我們后面再說。

這個加密擴(kuò)展已經(jīng)集成在 PHP7 中,不需要特別的安裝,如果是 PHP7 以下的版本需要獨(dú)立安裝擴(kuò)展。如果在測試時找不到下面介紹的函數(shù),請檢查當(dāng)前 PHP 的版本。

偽隨機(jī)字符生成

var_dump(random_bytes(5));
// string(10) "0681109dd1"

random_bytes() 每次調(diào)用都會生成不同內(nèi)容的字符串,而參數(shù)則是字符長度的隨機(jī)字符,在這里我們傳遞的是 5 ,返回了 10 個字符,可以看出這個參數(shù)是字符數(shù)量,而返回的其實(shí)是字節(jié)數(shù)量,對應(yīng)一個字符占用兩個字節(jié)的返回形式。或者我們就直接記住它返回的就是參數(shù)的兩倍即可。至于這個函數(shù)的作用嘛,可以為我們生成安全的用戶密碼 salt 、 密鑰關(guān)鍵字 或者 初始化向量。

偽隨機(jī)整數(shù)生成

var_dump(random_int(100999));
var_dump(random_int(-10000));
// int(900)
// int(-791)

對于整數(shù)數(shù)字的生成就更簡單了,為 random_int() 函數(shù)提供兩個參數(shù),也就是隨機(jī)整數(shù)的范圍就可以了。其實(shí)和 mt_rand() 的用法一樣。

生成來源

上述兩種加密偽隨機(jī)函數(shù)的生成來源都是依賴于操作系統(tǒng)的,具體如下:

  • 在 Windows 系統(tǒng),會使用 CryptGenRandom() 函數(shù)。從7.2.0開始使用CNG-API
  • 在 Linux 系統(tǒng),會使用 Linux getrandom(2) 系統(tǒng)調(diào)用
  • 在其他系統(tǒng),會使用 /dev/urandom
  • 否則將拋出異常

異常情況

這兩個函數(shù)也有相應(yīng)的異常情況會出現(xiàn),比如上面找不到生成來源的話就會拋出異常,當(dāng)然,除了這個之外還會有其它的因素也會導(dǎo)致異常的發(fā)生。

  • 如果找不到適當(dāng)?shù)碾S機(jī)性來源,將拋出異常
  • 如果給定的參數(shù)無效,將引發(fā) TypeError
  • 如果給定的字節(jié)長度無效,將引發(fā)錯誤

總結(jié)

今天的內(nèi)容非常簡單,而且還發(fā)現(xiàn)了 random_bytes() 這個函數(shù)的秒用,以后不用再自己去寫隨機(jī)生成 salt 的函數(shù)了,就像我們之間介紹密碼加鹽文章中 什么叫給密碼“加鹽”?如何安全的為你的用戶密碼“加鹽”? 的那個隨機(jī)字符生成函數(shù)(generateSalt)基本就可以用這個來替代了。是不是感覺收獲滿滿呢,學(xué)習(xí)的腳步從未停下,讓我們繼續(xù)一起探索更好玩的內(nèi)容吧!!

測試代碼:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202007/source/PHP%E7%9A%84%E5%8A%A0%E5%AF%86%E4%BC%AA%E9%9A%8F%E6%9C%BA%E6%95%B0%E7%94%9F%E6%88%90%E5%99%A8%E7%9A%84%E4%BD%BF%E7%94%A8.php

參考文檔:

https://www.php.net/manual/zh/book.csprng.php

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
php隨機(jī)數(shù)各種知識匯集
用PHP生成隨機(jī)數(shù)的函數(shù)(代碼示例)
matlab隨機(jī)數(shù)
C++中產(chǎn)生隨機(jī)數(shù)
000.【W(wǎng)eb安全】你所使用的隨機(jī)數(shù)真的安全嗎?
利用RANDBETWEEN、CHAR、IF函數(shù),隨機(jī)產(chǎn)生數(shù)字與字母組合字符串
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服