如何在Python中使用int xor字符串字符?

时间:2015-12-03 05:09:30

标签: python encryption xor rc4-cipher

我正在尝试创建一个Python Ciphersaber 2实现,因为我在网上找到的那些似乎产生了胡言乱语。在解密期间,我需要能够使用由整数值表示的密钥流来对字符串的单个字符进行xor,然后将该结果转换回字符串字符。请注意我是Python的新手,所以无视我糟糕的失败。

到目前为止我尝试过的事情:

<html> <head> <link href="https://cdnjs.cloudflare.com/ajax/libs/plottable.js/1.15.0/plottable.css" rel="stylesheet" /> <link href="https://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.1/basic/jquery.qtip.css" rel="stylesheet" /> </head> <body> My Plot <!-- Show histograms --> <div id="sample-pies"></div> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/plottable.js/1.15.0/plottable.js"></script> </body> </html>导致整数值

plaintext[i] = ord(msg[i] ^ keystream[i] plaintext[i] = str(plaintext[i])会产生值y,\ xed \ xf4 \ x07。这些是字节值吗?

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

字符串由计算机中的ASCII值(准确地说是UTF-8)表示。如果你想对明文字符和密钥流进行xor,我建议你把它转换成26的范围。

E.g。 ord('a')是97 &amp; ord('b')在ASCII

中为98
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')表示大写为modulo)。生成密码 - 步骤1

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

现在,将以前的结果 1 添加到ord('a'),然后将其转换为字符。生成密码 - 步骤2

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

同样,您可以将流程转换为解密

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