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