zoukankan      html  css  js  c++  java
  • kbmMW基于硬件生成随机数

    按作者的说法,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:=1 to 100 do//生成100个随机数 begin Memo1.Lines.Add(inttostr(r32.Random)); end; finally r32.Free; end; end;
     
  • 相关阅读:
    L1-021 重要的话说三遍
    L1-020 帅到没朋友
    pytest--钩子
    pytest--allure
    pytest--常用插件
    pytest--高级用法
    pytest--配置文件
    pytest--控制运行
    pytest--fixture
    pytest--使用前提
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/9552668.html
Copyright © 2011-2022 走看看