2017-06-23 103 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'设置来避免这种情况。必须解决这个困难的方式:) –