产生密码转表,如下所示:
把个随机数放在一个距阵中,然后对他们进行排序,使用这样一种方式(我们要记住最初的位置)使用最初的位置来产生一个表,随意排序的表,表中的数字在到之间。假如不是很明白如何来做,就可以不管它。但是,下面也提供了一些原码(在下面)是我们明白是如何来做的。现在,产生了一个具体的字节的表。让这个随机数产生器接着来产生这个表中的其余的数,-以至于每个表是不同的。下一步,使用技术来产生解码表。基本上说,假如映射到,那么一定可以映射到,所以(是一个在到之间的数)。在一个循环中赋值,使用一个字节的解码表它对应于我们刚才在上一步产生的字节的加密表。
使用这个方法,已经可以产生这样的一个表,表的顺序是随机,所以产生这个字节的随机数使用的是二次伪随机使用了两个额外的位的密码现在,已经有了两张转换表,基本的加密解密是如下这样工作的。前一个字节密文是这个字节的表的索引。或者,为了提高加密效果,可以使用多余位的值,甚至使用校验和或者算法来产生索引字节。假定这个表是的数组将会是下面的样子
变量是加密后的数据,是前一个加密数据(或着是前面几个加密数据的一个函数值)。很自然的,第一个数据需要一个“种子”,这个“种子”是我们必须记住的。假如使用的表,这样做将会增加密文的长度。或者,可以使用你产生出随机数序列所用的密码,也可能是它的校验和。顺便提及的是曾作过这样一个测试使用个字节来产生表的索引以位的密钥作为这个字节的初始的种子。然后,在产生出这些随机数的表之后,就可以用来加密数据,速度达到每秒钟个字节。一定要保证在加密与解密时都使用加密的值作为表的索引,而且这两次一定要匹配
加密时所产生的伪随机序列是很随意的,可以设计成想
要的任何序列。没有关于这个随机序列的具体的信息,解密密文是不现实的。例如:一些码的序列,如“可能被转化成一些随机的没有任何意义的乱码,每一个字节都依靠于其前一个字节的密文,而不是实际的值。对于任一个单个的字符的这种变换来说,隐藏了加密数据的有效的真正的长度。
假如确实不理解如何来产生一个随机数序列,就考虑数列,使用个双字(位)的数作为产生随机数的种子,再加上第三个双字来做操作。这个算法产生了一系列的随机数。算法如下:
假如想产生一系列的随机数字,比如说,在和列表中所有的随机数之间的一些数,就可以使用下面的方法:
××××
××××
××××
××
一
变量中的值应该是一个排过序的唯一的一系列的整数的数组,整数的值的范围均在到之间。这样一个数组是非常有用的,例如:对一个字节对字节的转换表,就可以很轻易并且非常可靠的来产生一个短的密钥(经常作为一些随机数的种子)。这样一个表还有其他的用处,比如说:来产生一个随机的字符,计算机游戏中一个物体的随机的位置等等。上面的例子就其本身而言并没有构成一个加密算法,只是加密算法一个组成部分。