密码加密解密逻辑
cipher encryption decryption logic
我找到了很多解决方案,但没有一个更快
问题来了...
MR 'A' 和 MR 'B' 是朋友。
他们想加密他们的谈话。所以他们发明了一种新的密码。
每条消息都被编码为其二进制表示
然后记下K次,移位0,1,⋯,K−1位。
如果 B=1001010 且 K=4 它看起来是这样的:
`1001010
1001010
1001010
1001010`
然后我们进行异或运算得到
1001010
1001010
1001010
1001010
--------------
1110100110 (ENCODED MESSAGE SEND TO B)
现在将此编码消息与以下信息一起提供给接收者 (MR 'B')
1) 原始字符串中的位数(即我们示例中的 7)
2) 我们在原始字符串中执行的移位次数(此处为 4)
3)编码后的字符串(这里是1110100110)
MR 'B' 必须找到原始字符串 1001010
请在逻辑上帮助我如何找到我是 MR 的原始字符串 'B'
简单,虽然这属于 math.stachexchange.com
首先,如果1
的个数是奇数,xor就是1
,否则0
.
所以,我们可以倒推:
???????
???????
???????
???????
1110100110
第一个是1
,所以1
一定是奇数,只有一个space,所以一定是1
!我们可以复制出来给其他人:
1??????
1??????
1??????
1??????
1110100110
第二个说 1
的数量是奇数,所以 space 必须是 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
因为可以用同样的方法推导出同样的信息。
我找到了很多解决方案,但没有一个更快 问题来了...
MR 'A' 和 MR 'B' 是朋友。 他们想加密他们的谈话。所以他们发明了一种新的密码。 每条消息都被编码为其二进制表示 然后记下K次,移位0,1,⋯,K−1位。
如果 B=1001010 且 K=4 它看起来是这样的:
`1001010
1001010
1001010
1001010`
然后我们进行异或运算得到
1001010
1001010
1001010
1001010
--------------
1110100110 (ENCODED MESSAGE SEND TO B)
现在将此编码消息与以下信息一起提供给接收者 (MR 'B')
1) 原始字符串中的位数(即我们示例中的 7)
2) 我们在原始字符串中执行的移位次数(此处为 4)
3)编码后的字符串(这里是1110100110)
MR 'B' 必须找到原始字符串 1001010
请在逻辑上帮助我如何找到我是 MR 的原始字符串 'B'
简单,虽然这属于 math.stachexchange.com
首先,如果1
的个数是奇数,xor就是1
,否则0
.
所以,我们可以倒推:
???????
???????
???????
???????
1110100110
第一个是1
,所以1
一定是奇数,只有一个space,所以一定是1
!我们可以复制出来给其他人:
1??????
1??????
1??????
1??????
1110100110
第二个说 1
的数量是奇数,所以 space 必须是 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
因为可以用同样的方法推导出同样的信息。