java编程遇到{Insecure Randomness}问题对随机数Random和SecureRandom的使用分析

一、Random

Insecure Randomness这个问题就是原来公司老代码使用random遇到的问题,因为这个类提供的获取随机数的方法是可预测的,random是用来创建伪随机数。所谓伪随机数,是指只要给定一个初始种子产生的随机数列是完全一样的
基本算法:linear congruential pseudorandom number generator (LGC) 先行同余法为随机数生成器在注重信息安全的应用中,不要使用 LCG 算法生成随机数,要使用SecureRandom。但是唯一好的一点就是不需要处理异常和抛异常

二、SecureRandom

所以我写了一个工具类用来提供这个方法可以让其地方调这个方法而且不用处理异常

public class SecureRandomUtil {
//生成日志类
    private static Logger logger = LoggerFactory.getLogger(SecureRandomUtil.class);
    public static int getSecureRandom(int size) {
        SecureRandom sr = null;
        try {
            sr = SecureRandom.getInstanceStrong(); // 获取高强度安全随机数生成器
        } catch (NoSuchAlgorithmException e) {
            logger.error(e.getMessage(), e);
            sr = new SecureRandom(); // 获取普通的安全随机数生成器
        }
//限制获取出来的随机数最大值
        int i = sr.nextInt(size);
        return i;
    }
public static int getSecureRandom() {
        SecureRandom sr = null;
        try {
            sr = SecureRandom.getInstanceStrong(); // 获取高强度安全随机数生成器
        } catch (NoSuchAlgorithmException e) {
            logger.error(e.getMessage(), e);
            sr = new SecureRandom(); // 获取普通的安全随机数生成器
        }
        int i = sr.nextInt();
        return i;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值