[发明专利]一种增加随机函数种子熵值的方法在审
申请号: | 202010830024.5 | 申请日: | 2020-08-18 |
公开(公告)号: | CN112073186A | 公开(公告)日: | 2020-12-11 |
发明(设计)人: | 吴宗鸿 | 申请(专利权)人: | 浙江鸿城科技有限责任公司 |
主分类号: | H04L9/08 | 分类号: | H04L9/08;G06F7/58 |
代理公司: | 北京沁优知识产权代理有限公司 11684 | 代理人: | 林捷达 |
地址: | 310000 浙江省杭州市滨*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 增加 随机 函数 种子 方法 | ||
一种增加随机函数种子熵值的方法,定义一局部变量,再定义一指针指向局部变量,为该局部变量分配未初始化栈空间,同时为局部变量赋值;程序调用局部变量,程序记录调用时间及分配进程识别码;将局部变量与局部变量的栈地址的数值按位与运算得到变量一,将调用时间与分配进程识别码按位或运算得到变量二;变量一与变量二异或运算得到随机初始化种子,通过增加随机初始化种子的不确定性来增加所述随机数的不确定性。
技术领域
本发明涉及随机函数技术领域,尤其是一种增加随机函数种子熵值的方法。
背景技术
随机数在密码学中的用途主要有生成初始化向量、生成密钥等,通常使用srand函数调用种子产生随机数时,一旦种子相同产生的随机数将是相同的。常使用时间作种子,由于每次运行程序的时间不相同,产生的随机数也不同,但如果恶意攻击者知道目标电脑使用的随机数产生函数采用时间函数来作为种子,则可以预测到指定时间点生成的随机数,进而可以破解目标秘钥;且多线程同时调用同一个种子,会产生相同的随机数,使程序统计学上种子和随机数的离散度降低,熵值也下降。
发明内容
本发明的目的在于克服现有技术的不足,提供一种增加随机函数种子熵值的方法。
本发明解决其技术问题是采取以下技术方案实现的:
一种增加随机函数种子熵值的方法,该方法包括以下步骤:
步骤S1,调用局部变量,程序记录调用时间及分配进程识别码进行运算得到一随机初始化种子,随机初始化种子是随机函数运算的初始条件,随机函数不停迭代产生随机数;
步骤S2,建立一个种子存放区,种子存放区是静态存储区开辟的一个内部共享空间放置待存入种子,最初随机初始化种子作为待存入种子放置在种子存放区;
步骤S3,随机函数以待存入种子为条件,以线性同余运算不停迭代产生及输出随机数;
步骤S4,随机数向右位移16位得到新的种子,新的种子作为待存入种子。
优选的,所述步骤S1包括:
步骤S1-1,定义一局部变量,再定义一指针指向局部变量,为该局部变量分配未初始化栈空间,同时为局部变量赋值;
步骤S1-2,调用局部变量,记录调用时间及分配进程识别码;进程识别码是调用局部变量随机分配的值,调用时间是局部变量被调用的时间距离1970年1月1日00:00:00的秒数;
步骤S1-3,检测局部变量、局部变量的栈空间、调用时间及分配进程识别数值,若检测到丢失数值或者数值小于0,重复所述步骤S1-1;
步骤S1-4,将局部变量与局部变量的栈空间的栈地址的数值按位与运算得到变量一,将调用时间与分配进程识别码按位或运算得到变量二;
步骤S1-5,变量一与变量二异或运算得到随机初始化种子。
优选的,所述步骤S1还包括步骤S1-6,启动一定时器,在规定期限内未获得随机初始化种子,检测变量一与变量二的有效性;
若变量一与变量二均存在且数值均为正数,重复所述步骤S1-5;
若变量一与变量二其中一个丢失或数值不为正数,重复所述步骤S1-1。
优选的,种子存放区的大小是待存入种子大小的N倍。
优选的,N=1。
优选的,所述步骤S3包括:
步骤S3-1,调用随机函数,定义一内部变量,内部变量复制种子存放区中待存入种子的值;
步骤S3-2,调用内部变量,通过随机函数的线性同余运算,计算及输出随机数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江鸿城科技有限责任公司,未经浙江鸿城科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010830024.5/2.html,转载请声明来源钻瓜专利网。