偶来陪Hot大叔玩69。
各位!不要误会!我说的确是数字69 (六十九, 陆拾玖!)。
把2个69中间加个0,就变成69069。(不要砸我) 找一个整数,8位的不要,32位的也不要,只要16位的 把这个数乘以69069,取16位余数,再加1,看看得到什么? 没看出来? 把结果再乘以69069,取16位余数,再加1,看看? 还没看出来?把结果再乘以69069,取16位余数,再加1,看看? 真没看出来?上一步for()一个10000遍,printf看看... .... 没看出来我就放心了。这是一个高性能的伪随机数序列。(Quake3源代码里找来的算法)
知道我要干啥了吧? 这个序列既然是随机数,说明序列前后任意N个数无关联。从后面的数无法预测前面的数。依次类推,第一个数无法推知。 第一个数有自己定,记好了当密码,产生一串串随机数。把信息安字节和随机数序列异或。出来还是一个随机数串,原始信息被淹没了。必须按照原始的序列顺序重新产生随机数,再把随机字串异或回去,才能得到原始信息
和本贴无太大联系,看看有什么其他启发而已。 |