一、由nextInt()实施的随机数生成器不能抵挡加密攻击

1、不安全的随机数:电脑是一种具有确定性的机器,因此不可能产生真正的随机性。伪随机数生成器 (PRNG)

近似于随机算法,始于一个能计算后续数值的种子。
2、PRNG 包括两种类型:统计学的 PRNG 和密码学的 PRNG。统计学的 PRNG 可提供有用的统计资料,
但其输出结果很容易预测,因此数据流容易复制。若安全性取决于生成数值的不可预测性,则此类型不适用。
密码学的 PRNG 通过可产生较难预测的输出结果来应对这一问题。为了使加密数值更为安全,必须使攻击者
根本无法、或极不可能将它与真实的随机数加以区分。通常情况下,如果并未声明 PRNG 算法带有加密保护,
那么它有可能就是一个统计学的 PRNG,不应在对安全性要求较高的环境中使用,其中随着它的使用可能会导致
严重的漏洞(如易于猜测的密码、可预测的加密密钥、会话劫持攻击和 DNS 欺骗)。
3、在对安全性要求较高的环境中,使用一个能产生可预测数值的函数作为随机数据源,会产生 
Insecure Randomness 错误。

4、java.util.Random是一个伪随机函数,如果传入的seed值相同的话,返回的随机数者是相同的 。

Random,它的种子是System.currentTimeMillis(),所以它的随机数都是可预测的。
eg: new Random(6).nextInt() 6为种子数

二、解决方法

1、SecureRandom代替Random

import java.security.SecureRandom;public class SecureRandomTest {private SecureRandom ran;public SecureRandomTest(int seed){ran = new SecureRandom();}public int getRandom(int seed) {return ran.nextInt();}public static void main(String[] args) {int seed = 18;System.out.println(new SecureRandomTest(seed).getRandom(seed));}
}

2、ESAPI

参数0和100可以随意设置,意思是生成0到100之间的随机数,如果你想随机数被预测到概率更低,
不妨将两个参数的差值设置足够大。
import org.owasp.esapi.ESAPI;public class ESAPINextIntTest {public static void main(String[] args) {int random = ESAPI.randomizer().getRandomInteger(0,100);System.out.println(random);}
}

Insecure Randomness引发对随机数生成器抵挡加密攻击的方法相关推荐

  1. java—随机数生成器

    随机数生成器 通过简单的Runable方法,重载run方法,在窗体中实现设置范围内的数字变换,通过两个按钮来实现不同的操作. import java.awt.BorderLayout; import ...

  2. 解决Fortify漏洞:Insecure Randomness(不安全随机数)

    1. 解释 Fortify漏洞:Insecure Randomness(不安全随机数)指的是代码中使用了不安全或弱随机数生成器导致的安全漏洞.随机数在密码学应用.加密和解密等领域中经常被使用,如果生成 ...

  3. Java 随机数生成器 Random SecureRandom 原理分析

    文章目录 java.util.Random java.Security.SecureRandom /dev/random 与 /dev/urandom 资料 Java 里提供了一些用于生成随机数的工具 ...

  4. Java 随机数生成器 Random SecureRandom

    Java 里提供了一些用于生成随机数的工具类,这里分析一下其实现原理,以及他们之间的区别.使用场景. java.util.Random Random 是比较常用的随机数生成类,它的基本信息在类的注释里 ...

  5. 【DEF CON】数十亿物联网设备受严重随机数生成器缺陷影响

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 数十亿物联网设备使用的硬件随机数生成器未能正确生成随机数,严重影响这些设备的安全,将其置于攻击风险中. Bishop Fox 公司的研究员 ...

  6. 随机数生成器 java_Java中的随机数生成器

    随机数生成器 java Today we will look at how to generate a random number in Java. Sometimes we need to gene ...

  7. Linux 文件安全之随机数生成器

    Linux 文件安全之随机数生成器 笔者:李晓辉 数据安全这一话题,在如今这个时代,哪里都在喊,但是我们每天都能看到由于数据安全不到位,造成多少多少损失,说实话,谁也不能保证数据的绝对安全,只有相对的 ...

  8. 香蕉为什么能做随机数生成器?因为,它是水果界的“辐射之王”

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 5 分钟. 来自:杨净 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 一个香蕉,竟然还能这么用?! 真·随机数生成器, ...

  9. ARPA基于BLS的门限签名算法随机数生成器设计

    作者 | ARPA 责编 | 晋兆雨 头图 | 付费下载于视觉中国 随机数已经在密码学.彩票和游戏等众多领域被广泛使用.区块链与随机性也有着紧密的关联,因为它们从随机性中寻求公平.被广泛应用的的工作量 ...

  10. 密码学安全强随机数生成器_强密码学简介

    密码学安全强随机数生成器 让我惊讶的一件事是,大多数开发人员都不熟悉强大的加密技术. 在我的职业生涯中,我已经看到过各种各样的错误,这些错误会导致数据泄漏,可猜测的密码,不幸的泄露甚至更糟. 令人高兴 ...

最新文章

  1. 15天Python入门-3-流程控制-选择结构
  2. 第十四周项目2-带姓名的成绩单
  3. 《professional asp.net 2.0》读书笔记--连载2
  4. skynet-源码分析1:目录下的文件整理
  5. 基于SEAL库实现PSI-报错实录1
  6. Python正则表达式介绍 re.findall(pattern, str, flag=0)/re.I re.L re.M
  7. PAIP.MYSQL设置远程账户登陆总结
  8. 切比雪夫多项式c语言csdn,切比雪夫多项式(Chebyshev polynomials)
  9. Leetcode力扣 MySQL数据库 1194 竞标赛优胜者
  10. 易优CMS插件-站长必备易优CMS插件
  11. 数学家张益唐亲自评价关于攻克朗道西格尔零点猜想这个研究成果和意义!
  12. python伪装ip_Python爬虫如何用高质量代理IP伪装?
  13. 服务类采购订单 Service PO
  14. 在线超级计算器(微积分、方程)
  15. 有没有一款好的在线报表编辑器?详解:FastReport Online Designer
  16. 重邮计算机专业毕业月薪多少,高校就业质量报告⑥ | 重庆邮电大学2020届毕业生月均收入6800元...
  17. 202106笔记--
  18. 内网穿透 NPS 站点 并添加HTTPS
  19. python实时播放音频和录音_python实现播放音频和录音功能示例代码
  20. 神目云抗疫又出杀手锏:风险人物轨迹追溯,毫秒锁定密切接触者

热门文章

  1. 每日简报 4月22日简报新鲜事 每天一分钟 了解新鲜事
  2. python初学之字符串、列表与元组小练习
  3. 集合竞价如何买入_教你几招!什么是集合竞价?散户如何参与集合竞价?
  4. 基于python的第三方库Pyautogui实现程序自动控制鼠标与键盘
  5. linux防火墙reject,linux 防火墙配置与REJECT导致没有生效问题(示例代码)
  6. ICE for Linux
  7. 由内而外全面造就自己
  8. Windows常见错误
  9. GBase 8s 编写使用UDR(C/Java)
  10. c语言中(char)的用法,c语言中char的用法是什么意思.docx