我正在研究一个函数f将使用字符串s作为种子并生成n个字符串y 0..n 的要求,我可以很容易地做到这一点,但我也想做反向即,生成的字符串的f -1 (y i )会给我回复。
y 0 = f(s)#第一次调用f(s)它给我y 0
y 1 = f(s)#第二次调用f(s)它给我y 1
...
y i = f(s)#i th time我调用f(s)它给了我y i
等等。
反函数,
s = f -1 (y i )
如何找到函数f和f -1 ,另一个约束是字符大小对于这些字符串不能太大,比如说最多20-25个字符。
有什么建议吗?
答案 0 :(得分:0)
好吧,如果我在广泛的地方这样做,这将具有特定的通道编码,但是:
这些是数学概念,所以让我们将字符串映射到数字并以代数方式查看它们:
假设我们只使用128个常见的ASCII字符,你的20个字符的字符串空间有2个 7 * 20 元素。那是很多元素。
然而,通信技术有一种称为加扰的方法,这是一种将序列中的比特混合的可逆过程,其方式是在整个序列上扩展每比特能量。这导致了相当随机的比特流。它通常使用反馈移位寄存器实现。
可以找到满足加扰需求的2 140 状态LFSR,并且可以将乘法加扰器的输出解释为序列中的下一个元素。
但是,请注意你的问题是 hard one ,我希望我已经充分说明了 - 获得具有良好随机属性的东西是一件很苛刻的事情,我不能建议你自己实现这样的东西 - 只要你需要依赖伪随机字符串的数学属性就会出现问题。