我已经阅读过,一般来说,SecureRandom的一些实现可能会产生真正的随机数。

特别是,Android文档说

instances of this class will generate an initial seed using an internal entropy source, such as /dev/urandom

但这是否意味着它将产生真正的随机数(即,而不是伪随机数)?

如果我用这种方式在Android中使用SecureRandom…

…当我调用sr.nextBoolean()时,会得到一个真正的随机输出吗?

或者产出可能更多(或更少?)随机,如果我每次都通过这样做获得输出:江户十一〔二〕号?

这不一定是真的,因为有些Android设备没有硬件来生成真正的随机数。至于具有该硬件的设备是否会使用它,我不这么认为,尽管Linux内核可能会加载一个模块,从该硬件获取真正的随机数。

afaik所有实现都使用不同的形式或算法散列。虽然它们具有良好的数学性质,但并非真正的随机性。

从Android开发人员的博客中,"我们已经确定,使用Java加密体系结构(JCA)来进行密钥生成、签名或随机数生成的应用程序可能不会因为底层PRNG初始化不当而在Android设备上获得密码强大的值……"。之后,我相信AOSP会切换到OpenSSL的生成器。变化发生在果冻豆上。

@我有代码可以使用JNI读取Android的传感器,然后输入一个随机数生成器(比如OpenSSL或Crypto++)。您可以使用它来做同样的事情,或者使用它来生成Java HMAC/SHA-1生成器。"肉和土豆"源文件位于android/crypto++prng的Pastebin上,由传感器自动播种(由jww提供)。我希望尽快将Eclipse项目上传到Crypto++wiki(wiki目前因配置更改而出现问题)。

坚持。/dev/urandom仅用于生成初始种子。在那之后,一切都是算法。SecureRandom需要"提供加密强随机数生成器(RNG)"。

"真"和"伪随机"随机数对不同的人来说意味着很多不同的事情。最好避免这些。

/dev/urandom的代表性很差,因为人们不理解它和/dev/random之间的区别(比你想象的要差很多,少得多)。

如果你问/dev/urandom的种子植入是否会损害SecureRandom用于加密目的的适合性,答案是响亮的"不"。

如果你有时间的话,你可能会想读我关于整个问题的文章。

你好,托马斯,我想你有一个打字错误-一个铀之国的。(而且,不,这不是为了加密目的。)

根据Android开发者文档:

(SecureRandom) complies with the statistical random number generator tests specified in FIPS 140-2, Security Requirements for Cryptographic Modules, section 4.9.1

然而,同样的警告也适用于Android,就像Java一样:

Many SecureRandom implementations are in the form of a pseudo-random number generator (PRNG), which means they use a deterministic algorithm to produce a pseudo-random sequence from a true random seed. Other implementations may produce true random numbers, and yet others may use a combination of both techniques.

因此,简短的回答是:这取决于实现,但是如果您对FIPS 140-2满意,那么SecureRandom就足以满足您的目的了。

关键的答案是,由Linux内核定义的/dev/urandom保证不会阻塞。重点是在产生足够的熵的同时不拖延用户。如果Android文档说他们正在使用/dev/urandom进行初始化,并且内核中没有足够的熵来提供随机数,那么内核将返回到伪随机算法。

根据内核文档,除了"长寿命[加密]密钥",/dev/urandom几乎可以用于所有目的。考虑到您的预期用途,我怀疑Android SecureRandom将证明足够随机用于您的目的。

Android是一种独特的野兽。它有/dev/urandom,但我不相信android的SecureRandom和SecureRandomSpi在使用它。相反,种子确实很弱——它本质上是系统属性(比如序列号、基带版本)、时间(毫秒和纳秒)和字符串"你的随机性都属于我们"。查看entropyService.java。

java 实现真正的随机数_关于java:SecureRandom的Android实现是否产生真正的随机数?...相关推荐

  1. 【源码+图片素材】Java王者荣耀游戏开发_开发Java游戏项目【王者荣耀】1天搞定!!!腾讯游戏_Java课程设计_Java实战项目_Java初级项目

    王者荣耀是当下热门手游之一,小伙伴们是否想过如何制作一款属于自己的王者荣耀游戏呢? 本课程讲解了一个王者荣耀游戏的详细编写流程,即使你是刚入门Java的新手,只要你简单掌握了该游戏所需要的JavaSE ...

  2. java定时产生随机数_浅析Java随机数与定时器

    产生90-100的重复的随机数: public class RandomTest { public static void main(String[] args){ /* * Math.random( ...

  3. java课后习题七解析_《Java基础入门》_课后习题解析.doc

    <Java基础入门>_课后习题解析 <Java基础入门>课后习题 Java开发入门 一.填空题 1.Java的三大体系分别是_JavaSE_____._JavaEE_____. ...

  4. java jsp取静态常量_获取java静态

    Android NDK开发系列教程4:对类变量进行操作 终于建了一个自己个人小站:https://huangtianyu.gitee.io,以后优先更新小站博客,欢迎进站,O(∩_∩)O~~ 通常我们 ...

  5. java课后习题及答案_《java基础入门》课后习题及答案.doc

    <java基础入门>课后习题及答案.doc <Java 基础入门>课后习题及答案博学谷--让 IT 教学更简单,让 IT 学习更有效<Java 基础入门> 课后习题 ...

  6. java的关键字和保留字_「Java」详解常见的53个关键字

    1.在Java中目前一共有53个关键字: 其中由51+2个保留字=53个关键字 [友情提示 : Java的关键字都是小写哟] 2.Java的保留字有多少个?分别是什么? 答:Java的保留字有2个,J ...

  7. java基础入门课后习题_《Java基础入门》课后习题及答案

    <Java基础入门>课后习题及答案Java基础入门,课后习题,答案 博学谷--让IT教学更简单,让IT学习更有效 <Java基础入门>课后习题 第1章Java开发入门 一.填空 ...

  8. java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园

    最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...

  9. java字符串拆分成数组_用Java实现JVM第八章《数组和字符串》

    小傅哥 | https://bugstack.cn 沉淀.分享.成长,专注于原创专题案例,以最易学习编程的方式分享知识,让自己和他人都能有所收获.目前已完成的专题有:Netty4.x实战专题案例.用J ...

最新文章

  1. 关于HtmlAgilityPack解析页面中数据乱码问题
  2. 【12306图片验证12小时内被破解,验证安全的出路到底在哪?】
  3. 华北理工大学815c语言程序设计,2017年华北理工大学信息工程学院815C程序设计考研冲刺密押题...
  4. 海华·垃圾分类AI挑战赛baseline分享,评测得分最高至0.85
  5. oracle 数组类型
  6. oracle实验使用游标,Oracle数据库实验-PLSQL游标、过程、函数、包的使用
  7. css用一张大图片来设置背景的技术真相
  8. java返回类型自动_java-Apache Flink:由于类型擦除,无法自动确定函数的返回类型...
  9. APE结合键盘控制角色运动 转
  10. Windows Server Core Command (管理服务器核心的具体操作命令)
  11. lua的元表、模块和面向对象
  12. xfce4快捷键设置
  13. 计算机老师教育叙事,信息技术教育叙事范文10篇 初中
  14. WGS84坐标系转换到J2000坐标系
  15. 2019.03.07【APIO2018】【洛谷P4630】【BZOJ5463】铁人两项(圆方树)(树形DP)
  16. RAID磁盘阵列数据恢复
  17. CC2530 zigbee IAR8.10.1环境搭建
  18. 选定区域着色html,PS怎么填充颜色到选中区域?PS填充颜色到选中区域的方法
  19. 【BUG记录】Idea spring boot项目中target中没有同步更新最新目录文件及资源
  20. 关于“/usr/include/openssl/bn.h 288 error: parse error before BN_ULONG解决方法

热门文章

  1. Android 开发笔记___drawable
  2. SQL SERVER 的SQL语句优化方式小结
  3. [读书笔记]TCP/IP详解V1读书笔记-1
  4. POJ-3061 尺取
  5. string的反转输出以及char型字符串的反转输出
  6. linux自动挂载磁盘命令,使用mount命令配置Linux自动挂载
  7. java 读取project_java project 和 java web project 获取路径问题
  8. linux 那些事儿之我是 u 盘,《Linux那些事儿之我是USB》.PDF
  9. ZDB5304烧写方法
  10. BootLoader与Linux内核的参数传递