我有一个长度 l 位的随机二进制字符串 s 。如何将其原地更改为另一个相同长度的随机字符串,以便我可以检索原始字符串?
一个。一个简单的例子是添加+1 modulo 2 ^ l
B中。另一个例子可能是:对于字符串中的每个位 b ,将其替换为( b +位置( b ))%2其中position( b )是位(0,1,2,3,...)的位置。
然而,对于这两种方法,对于每个输入,输出与输入非常相似。例如,使用方法A,我将得到'010101'=> '010110'。有什么办法以某种方式“增加输出的随机性”?简而言之,我可以随机化一个字符串,并检索原始字符串(不向原始字符串添加额外的位)吗?
答案 0 :(得分:0)
您是否正在尝试制作自己的加密系统?如果是这样,典型的建议是使用现有的加密系统。
然而,一种做你要求的方法是从字符串本身生成一个值(例如,通过获取字符串的长度),并将其用作随机数生成器的种子,然后使用随机数生成器以某种可逆的方式改变每个字符。
这样,你的字符串将是相同的长度,并且看起来不像原始字符串,并且可以解码。它虽然不是很强大的加密 - 只是一个可变的密码,它可以被一个不错的解密尝试打破。