Random,ThreadLocalRandom,SecureRandom
来源:互联网 发布:java this super 区别 编辑:程序博客网 时间:2024/05/22 04:54
文中的
Random即:java.util.Random,ThreadLocalRandom 即:java.util.concurrent.ThreadLocalRandom
SecureRandom即:java.security.SecureRandom
Q:Random是不是线程安全的?
A:Random是线程安全的,但是多线程下可能性能比较低。
参考:
http://docs.oracle.com/javase/7/docs/api/java/util/Random.html
http://stackoverflow.com/questions/5819638/is-random-class-thread-safe
Q:ThreadLocalRandom为什么这么快?
A:其实这个看下源码就知道了。。因为Random用了很多CAS的类,ThreadLocalRandom根本没有用到。
Q:为什么在高强度要求的情况下,不要用Random?
A:特别是在生成验证码的情况下,不要使用Random,因为它是线性可预测的。记得有个新闻说的是一个赌博网站,为了说明其公平,公开的它的源代码,结果因为随机数可预测漏洞被攻击了。所以在安全性要求比较高的场合,应当使用SecureRandom。
update 2014-4-22: http://news.cnblogs.com/n/206074/
参考:http://www.inbreak.net/archives/349Q:从理论上来说计算机产生的随机数都是伪随机数,那么如何产生高强度的随机数?
A:产生高强度的随机数,有两个重要的因素:种子和算法。当然算法是可以有很多的,但是如何选择种子是非常关键的因素。如Random,它的种子是System.currentTimeMillis(),所以它的随机数都是可预测的。那么如何得到一个近似随机的种子?这里有一个很别致的思路:收集计算机的各种信息,如键盘输入时间,CPU时钟,内存使用状态,硬盘空闲空间,IO延时,进程数量,线程数量等信息,来得到一个近似随机的种子。这样的话,除了理论上有破解的可能,实际上基本没有被破解的可能。而事实上,现在的高强度的随机数生成器都是这样实现的。
比如Windows下的随机数生成器:
http://blogs.msdn.com/b/michael_howard/archive/2005/01/14/353379.aspx
http://msdn.microsoft.com/en-us/library/aa379942%28VS.85%29.aspx
Linux下的 /dev/random:
http://zh.wikipedia.org/wiki//dev/random
据SecureRandom的Java doc,说到在类unix系统下,有可能是利用 /dev/random,来实现的。
其它的一些有意思的东东:
最快的安全性要求不高的生成UUID的方法(注意,强度不高,有可能会重复):
在一个网站上看到的,忘记出处了。
随机生成产生随机数的函数?
是否可以利用一个随机数生成器来生成一系列的随机代码,然后作为一个新的随机数生成器?貌似强度是传递的,似乎没意义。
1 0
- Random,ThreadLocalRandom,SecureRandom
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom .
- Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
- Java中生成随机数Random、ThreadLocalRandom、SecureRandom、Math.random()
- [转]Java中的随机数生成器:Random,ThreadLocalRandom,SecureRandom
- Random ThreadLocalRandom 产生随机数
- Random和SecureRandom详解
- java7的ThreadLocalRandom和Random
- Java7的threadLocalRandom与Random
- Java 7的ThreadLocalRandom与Random
- 生成随机数的类Random和ThreadLocalRandom
- 生成随机数的类Random和ThreadLocalRandom
- ThreadLocalRandom
- SecureRandom
- SecureRandom
- 7.10.3 Java 7 的ThreadLocalRandom与 Random
- 最全Android面试题大集合(Android、Java、计算机基础、设计模式)持续更新
- GBIP-USB-HS线的驱动安装
- JSP页面中实现网页访问量的统计
- [BZOJ]1202: [HNOI2005]狡猾的商人 带权并查集
- A Swift Tour
- Random,ThreadLocalRandom,SecureRandom
- HTML常用标签1
- HDU 1222
- Spring.xml------处理事务详解
- easyui 双击行,启动编辑 ,及 保存 和 撤销 的实现。
- Linux进程切换
- Romantic 欧几里得的扩展
- 《算法经典》——第六章 数据结构
- CEPH RBD集群使用