一种基于单幅图像的真随机数序列生成方法技术

技术编号:8682447 阅读:215 留言:0更新日期:2013-05-09 02:31
本发明专利技术公开了一种基于单幅图像的真随机数序列生成方法,首先取得一幅数字图像,对其进行前处理操作,包括进行格式转换和裁剪等操作,得到符合尺寸要求的位图BMP格式图像,将此图像作为初始熵源图像;初始熵源图像经过后处理转换、二维到一维转换生成一组真随机数序列作为输出;同时,生成的该组真随机数序列作为反馈,用于对初始熵源图像进行置乱变换处理,生成一幅变换后的新熵源图像,同样经过后处理转换、二维到一维转换生成下一组真随机数序列,依此类推,将每一轮产生的真随机数序列合并,即可得到所需长度的真随机数序列;或将每一轮生成的真随机数序列依次存入缓存中,由应用程序按所需长度进行取用。

【技术实现步骤摘要】

本专利技术属于计算机
,涉及。
技术介绍
真随机数产生器建立在一种称为熵源的不确定性源的基础上,如热力学噪声、空气噪声、核衰变等现象,基于这些源来产生真随机数一般都需要额外的电路或设备。从成本和便利性等方面来看,这种硬件真随机数产生器的应用场合受到限制。基于此,人们提出了基于数字图像来产生真随机数的方法,这种软件真随机数生成器不但廉价,而且由于数字图像几乎随处可得,使用非常方便。但是,单幅图像所能产生的真随机数长度有限,当需要较长或者较多的真随机数时,要输入多幅图像才能满足应用要求,且耗时较长,在时效要求比较严格的场合应用受到限制。
技术实现思路
本专利技术的目的是克服现有技术中的缺陷,提供。 其技术方案为:,首先取得一幅数字图像,对其进行前处理操作,包括进行格式转换和裁剪等操作,得到符合尺寸要求的位图(BMP)格式图像,将此图像作为初始熵源图像;初始熵源图像经过后处理转换、二维到一维(2D-1D)转换生成一组真随机数序列作为输出;同时,生成的该组真随机数序列作为反馈,用于对初始熵源图像进行置乱变换处理,生成一幅变换后的新熵源图像,同样经过后处理转换、2D-1D转换生成下一组真随机数序列。依此类推,将每一轮产生的真随机数序列合并,即可得到所需长度的真随机数序列;或将每一轮生成的真随机数序列依次存入缓存中,由应用程序按所需长度进行取用。由于对初始熵源图像进行置乱变换处理所用的一个参数是上一个循环中生成的“01”随机数序列,因此变换后产生的图像依然具有随机性。本专利技术所述方法构成一个反馈系统:后续熵源图像通过系统生成的真随机数序列对初始熵源图像进行变换得到,上一轮生成的真随机数序列作为新熵源图像产生过程的一个输入参数,可保证熵源的不确定性。与现有技术相比,本专利技术的有益效果:1、本专利技术所述方法选用常见的数字图像作为系统的输入,节约成本,使用方便。2、本专利技术的技术方案在产生较长的真随机数序列时,不需要用户选取大量的图像,节省大量人力和时间。3、本专利技术所述方法中,真随机数序列的生成及保存与应用程序取用随机数的操作分离进行,系统在后台持续运行,源源不断地提供真随机数序列,应用程序可按需进行取用。方便且易于管理。4、本专利技术构成一个反馈系统:后续熵源图像通过系统产生的真随机数序列对初始熵源图像进行变换得到,保证了熵源的不确定性。附图说明图1为本专利技术真随机数生成方法流程示意图;图2为BMP图像尺寸裁剪流程图;图3为2D-1D转换操作流程图;图4为初始熵源图像变换处理生成后续新熵源图像的操作流程图;图5为对应动态链接库的内部结构示意图。具体实施例方式下面结合附图具体实施例来详细描述本专利技术的技术方案。参照图1,,首先获取一幅数字图像,对其进行前处理操作,包 括进行格式转换和裁剪等操作,得到符合尺寸要求的位图(BMP)格式图像,将此图像作为初始熵源图像;初始熵源图像经过后处理转换、二维到一维(2D-1D)转换生成一组真随机数序列作为输出;同时,生成的该组真随机数序列作为反馈,用于对初始熵源图像进行置乱变换处理,生成一幅变换后的新熵源图像,同样经过后处理转换、2D-1D转换生成下一组真随机数序列。依此类推,将每一轮产生的真随机数序列合并,即可得到所需长度的真随机数序列。图2为BMP图像尺寸裁剪流程图,对BMP位图进行裁剪操作,裁剪边长选取标准为:假设待裁剪图像大小为MXN,令m等于M、N中较小的值,选取n值,使得式2n彡m < 2n+1成立,则m=2n即为裁剪边长。对于MXN大小的BMP图像,判断M、N值的大小,如果M>N,则令m=N,否则令m=M ;设i=l,判断2~i < m&&2' (i+1) >m是否成立,不成立,则令i++,继续判断;如果成立,则以m=2~i为边长裁剪原图像,得到尺寸为mXm大小的符合要求的初始熵源图像。在得到熵源图像后,需要对其进行后处理转换。此操作的目的是对熵源图像做置乱变换,使像素矩阵变得杂乱无章,更具有随机性。此处可选用各种可以产生图像置乱效果的算法,如Arnold图像置乱算法,图像加密置乱算法等。图3:为2D-1D转换操作流程图。图像经过后处理转换后,得到一幅置乱后的数字图像。将所得图像的mXm的像素矩阵分割成MXM个相等的块,每个块中包含(m/M) X (m/M)个像素点,统计每一个块中像素值为奇数的像素点个数,如果为奇数,则对应的真随机数序列位为I,如果是偶数,则对应的真随机数序列位为0,统计完成之后即可得到一个MXM长度的“01”随机数序列。如图4中初始熵源图像为图2中得到的符合要求的初始熵源图像,“01”随机数序列为上一轮产生的真随机数序列(在对初始图像进行初次变换处理时,由于没有来自之前产生的随机数序列,可以将所需的随机数序列设为全0 ),应用上一轮中生成的真随机数序列对初始图像像素点进行局部移位,真随机数序列中每L位(L > 5)为I组,前3位指定当前鼠标点要进行偏移的方向,3位有8种情况,分别对应上丨,下丨,左一,右一,左上\,左下/,右上/,右下\ 8个方向,后(L-3)位指定鼠标点要进行偏移的位移(斜方向取近似值),循环调用真随机数序列对所有的像素点进行此种操作,可以得到变换后的新熵源图像。图5是对对应的动态链接库内部结构的简单描述:动态链接库包含2个对外接口函数,分别是 TRNG_Thread (string path_image)和 Get_RandNum(int length, char*rand_buf)。TRNG_Thread(string path_image)的功能是产生真随机数序列,通过参数path_image将数字图像的路径传入系统,如果路径不正确,或图像不能被系统识别,则函数返回false ;否则进入生成真随机数序列的操作,将产生的真随机数依次存入缓冲区中,如果缓冲区满则对其进行循环覆盖。Get_RandNum(int length, char*rand_buf)的功能是从缓冲区中获取真随机数序列,参数length为所需真随机数序列的长度,参数rand_buf为用来存放取出的真随机数序列的缓冲区。另外设置2个指针变量,用来保存当前缓冲区中正在写入和正在读出的指针位置,I个长度变量,用来记录当前缓冲区中真随机数序列的长度。如果调用函数Get_RandNum(int length, char*rand_buf)时,缓冲区中真随机数序列的长度小于length,则返回false,推迟某一时间后再重新执行。以上所述,仅为本专利技术较佳的具体实施方式,本专利技术的保护范围不限于此,任何熟悉本
的技术人员在本专利技术披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换均落入本专利技术的保护范围内。本文档来自技高网
...

【技术保护点】
一种基于单幅图像的真随机数序列生成方法,其特征在于,首先取得一幅数字图像,对其进行前处理操作,包括进行格式转换和裁剪等操作,得到符合尺寸要求的位图BMP格式图像,将此图像作为初始熵源图像;初始熵源图像经过后处理转换、二维到一维转换生成一组真随机数序列作为输出;同时,生成的该组真随机数序列作为反馈,用于对初始熵源图像进行置乱变换处理,生成一幅变换后的新熵源图像,同样经过后处理转换、二维到一维转换生成下一组真随机数序列,依此类推,将每一轮产生的真随机数序列合并,即可得到所需长度的真随机数序列;或将每一轮生成的真随机数序列依次存入缓存中,由应用程序按所需长度进行取用。

【技术特征摘要】
1.一种基于单幅图像的真随机数序列生成方法,其特征在于,首先取得一幅数字图像,对其进行前处理操作,包括进行格式转换和裁剪等操作,得到符合尺寸要求的位图BMP格式图像,将此图像作为初始熵源图像;初始熵源图像经过后处理转换、二维到一维转换生成一组真随机数序列作为输出;同时,生成的该组真随机数序列作为反馈,用于对初始熵源图像进行置乱变换处理,生成一幅变换后的新熵源图像,同样经过后处理转换、二维到一维转...

【专利技术属性】
技术研发人员:刘刚王泉杜冲田冬东张敬佘陈承
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1