原文章鏈接為:PHP的加密偽隨機(jī)數(shù)生成器的使用
文中對(duì)于 random_bytes() 函數(shù)的描述有誤。Github原始文檔已修改為:
var_dump(bin2hex(random_bytes(5)));
// string(10) "f28dc2bdd5"
var_dump(random_bytes(5));
// string(5) "?"??"
random_bytes() 每次調(diào)用都會(huì)生成不同內(nèi)容的二進(jìn)制字符串,而參數(shù)則是二進(jìn)制的字節(jié)長(zhǎng)度。直接獲取到的二進(jìn)制數(shù)據(jù)是亂碼格式的,所以一般我們會(huì)需要使用 bin2hex() 來(lái)將二進(jìn)制轉(zhuǎn)換成我們可以看懂的十六進(jìn)制格式字符串。不過(guò)由此帶來(lái)的結(jié)果就是我們轉(zhuǎn)換之后的十六進(jìn)制的字符長(zhǎng)度是我們?cè)O(shè)定的字符長(zhǎng)度的 2 倍。這個(gè)函數(shù)的作用,可以為我們生成安全的用戶密碼 salt 、 密鑰關(guān)鍵字 或者 初始化向量。
原錯(cuò)誤內(nèi)容:random_bytes() 每次調(diào)用都會(huì)生成不同內(nèi)容的字符串,而參數(shù)則是字符長(zhǎng)度的隨機(jī)字符,在這里我們傳遞的是 5 ,返回了 10 個(gè)字符,可以看出這個(gè)參數(shù)是字符數(shù)量,而返回的其實(shí)是字節(jié)數(shù)量,對(duì)應(yīng)一個(gè)字符占用兩個(gè)字節(jié)的返回形式?;蛘呶覀兙椭苯佑涀∷祷氐木褪菂?shù)的兩倍即可。至于這個(gè)函數(shù)的作用嘛,可以為我們生成安全的用戶密碼 salt 、 密鑰關(guān)鍵字 或者 初始化向量。
Github原文鏈接:
https://github.com/zhangyue0503/dev-blog/blob/master/php/202007/PHP的加密偽隨機(jī)數(shù)生成器的使用.md
聯(lián)系客服