密码加密解密逻辑

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

因为可以用同样的方法推导出同样的信息。