用伪随机数打造坚实的密钥
来源:互联网 发布:如何学习软件测试 编辑:程序博客网 时间:2024/04/29 03:36
大家知道伪随机数组是一种分布均匀的周期性数组。所谓分布均匀是指所有可能出现的元素都均匀出现了,并且它的平均值接近于元素的中值。
伪随机数组由随机函数生成,这是一类有趣的东西,有点像振荡器,有几种状态,参数搭配不同可能出现几种状态如输出常数、有规律的数、乱数,对应于振荡器的不起振、谐振、共振。
随机数组为什么可以作为密钥。因为它“毫无规律”,杂乱无章,所以其中可以藏污纳垢,隐藏数据,经它参杂后有规律的数据变为无规律。而优秀的伪随机数发生器产生的数组虽然是周期性的但周期很长,它的局部也是杂乱无章的,而且发生器多种多样的,我们假定窃密者已经掌握了正在使用的伪随机数组,而我们要用它做密钥,我们怎么做呢?
很简单,只要用法得当即可。应该选择周期长的发生器,例如使用伪随机数组的长度最好不要大于数组的周期,且不直接引用,而使用数组元素的代数运算值作为密钥,如果所需数组的长度大于周期你可以这样:1)使用叠加的方式破坏周期加大数组的组合长度,例如周期为T,伪随机数组串为ch[],这样使用他们,密钥=ch[n1]+ch[n2],循环时n1=n1+1,n2不变,当n1>T时,n1=0,n2=n2+1,这样就可以使T变为T*T,这是简单说明,实际应用时还要加些东西。2)在伪随机数组形成时,选择性吸收,并不是按原序列排列。你可能说这些都可以从分析程序中知道,是啊,重要的是利用加密密码(password)使伪随机数种子和引用的起点和密钥组合及拣选组员等悬浮起来,这样就使分析处于不确定中。
不要单独实用数组,那样比较危险,破解者形成数组后,拼来拼去可能泄密,要一个明文对应两个以上的密钥,最好是两个密钥是来自两个函数,在用作密钥时,起点都让其不确定,例如起点与密码相关,这样就比较安全,拿一个数组拼没有用,只有两个同时用,并且组合正确才行,那就比较困难了。
- 用伪随机数打造坚实的密钥
- matlab 利用 密钥 产生一定范围内的 不重复的伪随机数
- 用伪随机数建造真的
- 伪随机数的生成
- 伪随机数的生成
- 伪随机数的安全
- 获取一个范围内的随机数(伪随机数)
- 非“伪”随机数的生成
- 生成伪随机数的源代码
- BASE64的伪随机数产生
- 常见的伪随机数产生
- random伪随机数的生成
- 伪随机数的生成算法
- C语言的伪随机数
- 可预测的伪随机数
- HTTPS:会话密钥对称加密HTTP (客户端随机数+服务端随机数+加密的随机数->会话密钥)
- 扑克牌的发牌程序(用伪随机数实现)
- 用rand()和srand()产生伪随机数的方法总结
- 常用Javascript收藏
- 高分考生如何报考志愿
- 如何报考提前批录取志愿
- 第一次创立博客
- 利用createprocess实现文件自删除
- 用伪随机数打造坚实的密钥
- 全国“211工程”高校名单
- 基于GIS的租房网站,最近刚刚完成,欢迎访问
- Servlet技术简介与编写、编译Servlet程序
- 最新出炉的好计算机图书连载
- 填报志愿慎重选择第一专业 别把保押在转专业上
- 高考志愿填报指南:未来十大热门专业预测
- SIP Servlet 概述及范例
- JavaScript实现二级、多级(N级)联动下拉列表框更新版,支持IE6,FireFox,函数和类两种调用方式,支持到N级,非常通用。