密码加密解密逻辑

时间:2015-05-17 16:36:03

标签: c encryption decode

我找到了很多解决方案,但没有人更快 这是问题...

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'

1 个答案:

答案 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

因为您可以使用相同的方法来获取相同的信息。