我找到了很多解决方案,但没有人更快 这是问题...
MR' A'和MR' B'是朋友。 他们想加密他们的谈话。所以他们发明了一种新的密码。 每条消息都被编码为其二进制表示 然后写下K次,移位0,1,⋯,K-1位。
如果B = 1001010且K = 4则看起来如此:
`1001010
1001010
1001010
1001010`
然后我们执行xor操作,我们得到
1001010
1001010
1001010
1001010
--------------
1110100110 (ENCODED MESSAGE SEND TO B)
现在,此编码信息将通过以下信息提供给接收方(MR' B')
1)原始字符串中的位数(即我们示例中的7位)
2)我们在原始字符串中执行的班次数(此处为4)
3)编码的字符串(此处为1110100110)
MR' B'有必要找到1001010的原始字符串
请在逻辑上帮助我,我怎样才能找到原始字符串我是MR' B'
答案 0 :(得分:1)
很简单,虽然这属于math.stachexchange.com
首先,请注意,如果1
的数量为奇数,则xor将为1
,否则为0
。
所以,我们可以倒退:
???????
???????
???????
???????
1110100110
第一个是1
,因此必须有奇数个1
s,并且只有一个空格,所以它必须是1
!我们可以把它复制到其他地方:
1??????
1??????
1??????
1??????
1110100110
第二个说有1
个奇数,所以空格必须是0
:
10?????
10?????
10?????
10?????
1110100110
第三个是相同的,所以我们需要添加另一个0
:
100????
100????
100????
100????
1110100110
第四个数字是0
,因此我们需要添加1
才能使1
的数量为偶数:
1001???
1001???
1001???
1001???
1110100110
等等:
10010??
10010??
10010??
10010??
1110100110
100101?
100101?
100101?
100101?
1110100110
1001010
1001010
1001010
1001010
1110100110
瞧!
请注意,执行此操作实际上是安全的:
1001010
100101 0 \
10010 10 |--- Ignorable bits
1001 010 /
1110100
因为您可以使用相同的方法来获取相同的信息。