2015-12-03 119 views
1

我试图创建一个Python Ciphersaber 2实现,因为我在网上找到的那些看起来会产生乱码。在解密期间,我需要能够使用由整数值表示的密钥流对字符串的单个字符进行异或,然后将该结果转换回字符串字符。请注意,我对Python完全陌生,因此无视我可怕的失败。如何在Python中使用int来异或字符串字符?

事情我试过到目前为止:

plaintext[i] = ord(msg[i]^keystream[i] plaintext[i] = str(plaintext[i])导致整数值

plaintext[i] = ord(msg[i]^keystream[i] plaintext[i] = chr(plaintext[i])导致整数y,\固定的\ XF4 \ X07。这些字节值是什么?

得到任何帮助

回答

0

字符串由ASCII值(UTF-8是精确的)的计算机表示。如果你想XOR的明文字符和密钥流,我确实建议你把它转换成26的范围。

E.g. ORD( 'A')为97 & ORD( 'B')是98在ASCII

ord('a')^ord('b') = 97^98 = 3 
Note: 3 in ASCII is not an alphabet 
a-z lies in range 97 - 122 
A-Z lies in range 65 - 100 

尝试将它们转化成26第一范围(使用ord( 'a')的对于小写字母和ord('A')对于大写字母为模)。生成密码 - 第1步

ord('a') % 97 = 0 
ord('b') % 97 = 1 
0^1 = 1 

现在,加上前面的结果为ord( 'A'),然后将其转换成字符。生成密码 - 第2步

chr(ord('a') + 1) = chr(97 + 1) = chr(98) = 'b' 

同样,你可以逆转的过程中解密

P.S.我不知道Ciphersaber算法。

相关问题