按作者的说法,Delphi提供的生成随机数不是真正随机的,因为他是根据种子计算的,即种子+算法生成的随机数,如果被人知道原始种子值和算法的调用次数,则可以重现随机数,因此在安全领域,这是不安全的。同时,作者也提到Delphi32位内置的随机生成品非常弱,绝对不建议应用在任何安全相关的项目中。

kbmMW 5.06.20支持TRNG(真随机噪声发生器)实现了真正的随机数算法,这个方案基于硬件,通过采样现实世界的噪声做为随机输入值,听起来是不是很NB!

基于这种方案实现随机数,要购买一个硬件,网址在这里:https://13-37.org/en/infinite-noise-trng/

这个硬件的驱动项目,在这里:https://github.com/13-37-org/infnoise

假设你现在有了上图中的这个硬件,就可以看看kbmMW如何基于他生成随机数。

首先,打开kbmMWConfig.inc配置文件,增加一行:

{$DEFINE KBMMW_INFINITE_TRNG_SUPPORT}

然后,在你的项目中引用kbmMWInfTRNG单元,使用TkbmMWInfTNRG32或者TkbmMWInfTNRG64类,建立实例,调用Random方法就可以了,这个方法,返回一个Cardinal(32位无符中整型值),还可以调用RandomDouble返回一个Double类型的值。

uses
kbmMWInfTRNG;
...
var
r32:TkbmMWInfTNRG32;
begin
r32:=TkbmMWInfTNRG32.Create;
try
for j:= to do//生成100个随机数
begin
Memo1.Lines.Add(inttostr(r32.Random));
end;
finally
r32.Free;
end;
end;
 

最新文章

  1. 生成ARM汇编
  2. nodejs中使用RabbitMq消息中心系统的方式
  3. .NET Framework 4.6的新东西
  4. java笔试题(2)
  5. java编译做了哪些事?
  6. 深入.Net字符串类型
  7. 开发错误日志之No matching bean of type [xxx] found for dependency
  8. 对 List 、Set、Map 的理解
  9. .Net中各种不同的对象创建方式的速度差异
  10. apache_php_mysql
  11. webstorm 设置js或者html文件自动缩进为4个空格不生效
  12. Python3在指定路径下递归定位文件中出现的字符串
  13. Android 布局学习之——Layout(布局)详解二(常见布局和布局参数)
  14. Nginx安装SSL安全证书
  15. HotSpot垃圾收集器GC的种类
  16. VC++使用CSocket发送HTTP Request时需要注意发送数据的编码格式
  17. SpeedTree制作超真实老宅
  18. 排序(bzoj 4552)
  19. [/wp_active.php]
  20. unused import statement android studio 解决方法

热门文章

  1. SSRF漏洞
  2. 模拟spring的IoC
  3. 牛客网第一场 A Monotonic Matrix
  4. Django之权限管理插件
  5. telnet的装配及xinetd的讨论
  6. eclipse安装springboot插件
  7. 变量和基本类型——复合类型,const限定符,处理类型
  8. ssh免输入密码登录
  9. Linux第二周作业
  10. Linux command nmon