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:= to do//生成100个随机数
begin
Memo1.Lines.Add(inttostr(r32.Random));
end;
finally
r32.Free;
end;
end;
kbmMW基于硬件生成随机数的更多相关文章
- kbmMW安全第#3 - 基于硬件的随机数#2
在之前的基于硬件的随机数博文中,我介绍了如何使用基于外部硬件的随机数生成器,来生成高质量的随机数. 但是,后来英特尔和AMD的CPU也包含随机值生成器.从2015年6月开始,来自Ivy Bridge的 ...
- 高并发分布式系统中生成全局唯一(订单号)Id js返回上一页并刷新、返回上一页、自动刷新页面 父页面操作嵌套iframe子页面的HTML标签元素 .net判断System.Data.DataRow中是否包含某列 .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
高并发分布式系统中生成全局唯一(订单号)Id 1.GUID数据因毫无规律可言造成索引效率低下,影响了系统的性能,那么通过组合的方式,保留GUID的10个字节,用另6个字节表示GUID生成的时间(D ...
- 用量子计算模拟器ProjectQ生成随机数,并用pytest进行单元测试与覆盖率测试
技术背景 本文中主要包含有三个领域的知识点:随机数的应用.量子计算模拟产生随机数与基于pytest框架的单元测试与覆盖率测试,这里先简单分别介绍一下背景知识. 随机数的应用 在上一篇介绍量子态模拟采样 ...
- .Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数
.Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: ; i < ; i++) { Rando ...
- (摘)C#生成随机数的三种方法
随机数的定义为:产生的所有数字毫无关系. 在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号. 在C#中获取随机数有三种方法: 一.Random 类 Random类默认的无参构造函数可以根据当 ...
- C#生成随机数的三种方法
随机数的定义为:产生的所有数字毫无关系. 在实际应用中很多地方会用到随机数,比如需要生成唯一的订单号. 在C#中获取随机数有三种方法: 一.Random 类 Random类默认的无参构造函数可以根据当 ...
- c#封装DBHelper类 c# 图片加水印 (摘)C#生成随机数的三种方法 使用LINQ、Lambda 表达式 、委托快速比较两个集合,找出需要新增、修改、删除的对象 c# 制作正方形图片 JavaScript 事件循环及异步原理(完全指北)
c#封装DBHelper类 public enum EffentNextType { /// <summary> /// 对其他语句无任何影响 /// </summary> ...
- 基于numpy的随机数构造
class numpy.random.RandomState(seed=None) RandomState 是一个基于Mersenne Twister算法的伪随机数生成类 RandomState 包含 ...
- SecureRandom生成随机数超慢 导致tomcat启动时间过长的解决办法
用腾讯云的CentOS 7.2 CVM 服务器跑Tomcat时发现,Tomcat启动的特别慢,通过查看日志,发现时间主要花在实例化SecureRandom对象上了. 由该日志可以看出,实例化该对象使用 ...
随机推荐
- python基础之变量以及if语句
1.变量 1.1定义:变量是一种介质,是将一些值暂时存储在内存中,方便后续程序调用.可将其看作容器但其内部的东西是可变化的. 1.2 变量的命名规则: 1.变量的命名只能由数字,字母,下划线构成. 2 ...
- 使用formData上传文件,ajax上传
项目是vue项目,直接贴部分代码了: html: <input type="file" name="fileTable" @change="ch ...
- Oracle11g温习-第十三章:索引
2013年4月27日 星期六 10:46 1.索引(Index)的功能:对记录进行排序,加快表的查询速度 2.索引的分类 1)B-tree 索引(默认) a.在一个大表上 b.建立在重复值比较少的 ...
- iBeacon室内定位原理解析【转】
目前,技术发展持续火热,因着iBeacon的定位精度和造价都比较符合国内室内定位的市场需求,下面我们来聊一聊iBeacon室内定位原理. iBeacon定位原理 iBeacon是一项低耗能蓝牙技术,工 ...
- docker实战系列之搭建rabbitmq
1.搜索镜像[注:因为我这里采用的是阿里云镜像加速器,所以我直接在阿里云中搜索相关镜像路径],点击"详情"查看公网拉取路径 2.拉取镜像 docker pull registry. ...
- PHP函数总结(个人版)
($saying[$key][, , 'utf-8'); 1.//mb_substr() string mb_substr ( string $str , int $start [, int $len ...
- python3.7 安装
python3.7 安装 下载安装 cd /usr/localwget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgztar -xvf ...
- shell 变量介绍
变量命名规则 变量名必须以字母或下划线开头,名字中间只能由字母,数字和下划线组成,大小写是区分的 变量名的长度不得超过255个字符 变量名在有效的范围内必须是唯一的 在Bash中,变量的默认类型都是字 ...
- ajax参数传递之[HttpGet]/[HttpPost]/[HttpPut]/[HttpDelete]请求
$.ajax({ type: "get", url: "http://localhost:27221/api/Charging/GetByModel", con ...
- unity中鼠标按下加速漫游,鼠标抬起减速漫游。
private bool IsMouseUpOrDown=true; //一开始默认是鼠标抬起状态 if (Input.GetMouseButtonDown(1)) //鼠标按下的瞬间状态 { IsM ...