2017-06-23 101 views
0

react-native-bcryptlink)會引發以下警告。react-native-bcrypt:安全PRNG

Using Math.random is not cryptographically secure! Use bcrypt.setRandomFallback to set a PRNG. 

使用react-native-cryptolink)是一個潛在的解決方案,但感覺就像一個有nodify項目過於複雜。是否有更簡單的PRNG可以在bcrypt上設置?

回答

1

你是對的... react-native-bcrypt是目前在那裏的libs中較小的邪惡。

要修復警告,您只需提供一個替代隨機生成器庫。在下面的例子中,我使用了isaac.js

import bcrypt from "react-native-bcrypt"; 
 
import isaac from "isaac"; 
 

 
bcrypt.setRandomFallback((len) => { 
 
\t const buf = new Uint8Array(len); 
 

 
\t return buf.map(() => Math.floor(isaac.random() * 256)); 
 
}); 
 

 
const hash = bcrypt.hashSync(...) 
 

 
...

+0

謝謝!我仍然得到有關Math.random()不安全的警告,但我現在只看到一次。 –

+0

我相信你永遠不應該看到這個警告。也許你在設置setRandomFallback()之前觸發了哈希。 順便說一下,小心使用Uint8Array.map,因爲它看起來像與舊版本的反應不兼容。您可以簡單地使用循環來設置緩衝區中生成的隨機值。 – kbaylosis

+0

這是我的理解,但似乎無法弄清楚爲什麼我仍然收到警告。只是想檢查。感謝有關地圖的提醒。我已經有'Uint8Array.prototype.map = Array.prototype.map'設置來避免這種情況。必須解決這個困難的方式:) –