第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定

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

標(biāo)簽:
PHP

今天我们来介绍的是 PHP 中的加密伪随机数生成器CSPRNG 扩展。随机数的生成其实非常简单使用 rand() 或者 mt_rand() 函数就可以了但是我们今天说的这个则是使用了更复杂算法的一套随机数生成器。rand() 已经不是很推荐使用了mt_rand() 的生成速度更快一些也是现在的主流函数而加密的伪随机数生成函数则是密码安全的速度会比 mt_rand() 略慢一点。它需要依赖操作系统的一些函数这个我们后面再说。

这个加密扩展已经集成在 PHP7 中不需要特别的安装如果是 PHP7 以下的版本需要独立安装扩展。如果在测试时找不到下面介绍的函数请检查当前 PHP 的版本。

伪随机字符生成

var_dump(bin2hex(random_bytes(5)));
// string(10) "f28dc2bdd5"
var_dump(random_bytes(5));
// string(5) """

random_bytes() 每次调用都会生成不同内容的二进制字符串而参数则是二进制的字节长度。直接获取到的二进制数据是乱码格式的所以一般我们会需要使用 bin2hex() 来将二进制转换成我们可以看懂的十六进制格式字符串。不过由此带来的结果就是我们转换之后的十六进制的字符长度是我们设定的字符长度的 2 倍。这个函数的作用可以为我们生成安全的用户密码 salt 、 密钥关键字 或者 初始化向量。

random_bytes() 每次调用都会生成不同内容的字符串而参数则是字符长度的随机字符在这里我们传递的是 5 返回了 10 个字符可以看出这个参数是字符数量而返回的其实是字节数量对应一个字符占用两个字节的返回形式。或者我们就直接记住它返回的就是参数的两倍即可。至于这个函数的作用嘛可以为我们生成安全的用户密码 salt 、 密钥关键字 或者 初始化向量。

伪随机整数生成

var_dump(random_int(100, 999));
var_dump(random_int(-1000, 0));
// int(900)
// int(-791)

对于整数数字的生成就更简单了为 random_int() 函数提供两个参数也就是随机整数的范围就可以了。其实和 mt_rand() 的用法一样。

生成来源

上述两种加密伪随机函数的生成来源都是依赖于操作系统的具体如下

  • 在 Windows 系统会使用 CryptGenRandom() 函数。从7.2.0开始使用CNG-API
  • 在 Linux 系统,会使用 Linux getrandom(2) 系统调用
  • 在其他系统,会使用 /dev/urandom
  • 否则将抛出异常

异常情况

这两个函数也有相应的异常情况会出现比如上面找不到生成来源的话就会抛出异常当然除了这个之外还会有其它的因素也会导致异常的发生。

  • 如果找不到适当的随机性来源将抛出异常
  • 如果给定的参数无效将引发 TypeError
  • 如果给定的字节长度无效将引发错误

总结

今天的内容非常简单而且还发现了 random_bytes() 这个函数的秒用以后不用再自己去写随机生成 salt 的函数了就像我们之间介绍密码加盐文章中 [什么叫给密码“加盐”如何安全的为你的用户密码“加盐”]的那个随机字符生成函数generateSalt基本就可以用这个来替代了。是不是感觉收获满满呢学习的脚步从未停下让我们继续一起探索更好玩的内容吧

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消