栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java中的SecureRandom安全种子

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的SecureRandom安全种子

不,您应该避免使用

SecureRandom(byte[])
构造函数。它既不安全又不可携带。

它是不可移植的,因为它在Windows和其他操作系统上的行为有所不同。

在大多数操作系统上,默认算法是“ NativePRNG”,该算法从操作系统(通常是

"/dev/random"
)获取随机数据,而忽略您提供的种子。

在Windows上,默认算法为“ SHA1PRNG”,该算法将您的种子与计数器结合在一起,并计算结果的哈希值。

在您的示例中,这是个坏消息,因为输入(当前UTC时间(以毫秒为单位))具有相对较小的可能值范围。例如,如果攻击者知道RNG是在过去48小时内播种的,则他们可以将种子缩小到小于2
28个可能的值,即,您只有27位熵。

另一方面,如果您

SecureRandom()
在Windows上使用了默认构造函数,则它将调用本机
CryptoGenRandom
函数来获取128位种子。因此,通过指定您自己的种子,可以削弱安全性。

如果您确实想覆盖默认种子(例如,用于单元测试),则还应指定算法。例如

SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");sr.setSeed("abcdefghijklmnop".getBytes("us-ascii"));

另请参阅如何使用Java SecureRandom解决性能问题?
和此博客文章:http : //www.cigital.com/justice-league-
blog/2009/08/14/proper-use-of-javas-
securerandom/



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/569886.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号