|||
加密需要密钥,如果用于通讯还有密钥分发的问题,用随机函数值组成序列数组作为密钥是相当便利的,并且还不用分发,通讯双方以随机函数值作为基础数据经过相同的运算就可以得到相同的密钥。
一般加密程序是自己制作密钥,这样根据少量信息产生的密钥往往是单薄的,而利用随机函数值加上运算上的技巧就可以生成取之不尽的优质密钥数组,这是因为随机函数本身是大量信息的载体,利用好了就能隐藏明文信息。破解者有可能从程序中看出使用的是哪些随机函数,但是并不知道使用的是哪些具体的数据,并且这些被利用的函数值都是经过加工的,尽管知道这些数据之间有某种联系但是也无法利用这些联系得到任何有用的信息,这里一般都是程序利用用户密码(对破解者来说是绝对的未知数)来控制随机函数序列的加工进而产生新的密钥数组。
程序得到用户输入的密码,用这些密码的数据来控制密钥的建造,程序的流向等,并不是直接利用用户密码的数值,而是利用其衍生值,也就是根据需要以用户密码为基础计算出一些必要的参数,利用这些参数控制程序。
下面以特例简述如何加工密钥数组,现在文件一般都是以字节为单位构成的,就以字节数组叙述不失普适性,设明文长度为N字节,由用户密码计算出一个种子值,以此种子从随机函数中得到N字节的数组,这个数组是建造密钥的基础称为原始数组,最初的变换可以让原始数组的各项乘上一个参数并加上一个参数。下面是数组进一步的改造方式,可以单用也可以组合使用,仅举几例最简单的:【1】是【倒序】例如原序是1 2 3 4 5 现在是5 4 3 2 1;【2】是【对头抽取】例如 1 2 3 4 5 变为1 5 2 4 3;【3】是【分段变序】原序是假定每6项为一段 1 2 3 4 5 6 对这一序列进行随机排序例如得到 3 1 6 4 5 2,然后依次对所有序列进行这样的顺序转换,这种变换多种多样注意灵活处理最后不足一组的情况。【4】是【全部随机排序】此法等于原始数组的再造,绝对排除了原始数组之间的数据相关因素,达到类似真随机数组的效果。经变换后原随机函数的前后数值有关联的情形彻底改变,更加难以捉摸,加密强度和破解难度更上一层。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-3 01:58
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社