首页 > 其他 > 详细

SecureRandom产生强随机数简介

时间:2015-08-06 10:44:06      阅读:226      评论:0      收藏:0      [点我收藏+]

SecureRandom是强随机数生成器,主要应用的场景为:用于安全目的的数据数,例如生成秘钥或者会话标示(session ID),弱随机数生成器会产生严重的安全问题,而使用SecureRandom这样的强随机数生成器将会极大的降低出问题的风险。

SecureRandom与Random有很强的关系。

1. SecureRandom继承于Random,看一下它的两个构造函数构造函数:

public SecureRandom()
{
    super(0);//调用Random的构造函数
    getDefaultPRNG(false, null);
}
public SecureRandom(byte seed[])
{
    super(0);//调用Random的构造函数
    getDefaultPRNG(true, seed);
}

2. SecureRandom与Random的常见的两个方法如下所示:

获得一个随机的int数:

public int nextInt() {
        return next(32);
    }

next方法如下:

protected int next(int bits) {
        long oldseed, nextseed;
        AtomicLong seed = this.seed;
        do {
            oldseed = seed.get();
            nextseed = (oldseed * multiplier + addend) & mask;
        } while (!seed.compareAndSet(oldseed, nextseed));
        return (int)(nextseed >>> (48 - bits));
    }

获得随机的字节数组:

synchronized public void nextBytes(byte[] bytes)
{
    secureRandomSpi.engineNextBytes(bytes);
}

获得别的随机数的方法见下图:

技术分享

想更深入的SecureRandom研究文章,请参考别的资料。

 

SecureRandom产生强随机数简介

原文:http://www.cnblogs.com/longshiyVip/p/4707249.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!