我知道有一个内置的xor操作符可以用Python导入。 我正在尝试执行xor加密/解密。到目前为止我有:
def xor_attmpt():
message = raw_input("Enter message to be ciphered: ")
cipher = []
for i in message:
cipher.append(bin(ord(i))[2::])#add the conversion of the letters/characters
#in your message from ascii to binary withoout the 0b in the front to your ciphered message list
cipher = "".join(cipher)
privvyKey = raw_input("Enter the private key: ")
keydecrypt = []
for j in privvyKey:
keydecrypt.append(bin(ord(j))[2::]) #same
keydecrypt = "".join(keydecrypt )#same
print "key is '{0}'" .format(keydecrypt) #substitute values in string
print "encrypted text is '{0}'" .format(cipher)
from operator import xor
for letter in message:
print xor(bool(cipher), bool(keydecrypt))
这:
> for letter in message:
print xor(bool(cipher), bool(keydecrypt))
是我的Python开始出错的地方。
输出看起来像这样
Enter message to be ciphered: hello
Enter the private key: \@154>
key is '10111001000000110001110101110100111110'
encrypted text is '11010001100101110110011011001101111'
False
False
False
False
False
我搞砸的是,试图将这两个二进制(密钥和加密)进行比较,并给出true(1)或false(0)。然后,xor应该给我一个结果为1和0的二进制列表,这两个列表是通过比较得到的。有什么意见吗?
这是一个没有错误检查的天真/极简实现。这里需要len(somecode)>;=len(消息)。
下面的代码可以双向工作,并且在使用循环时不需要进行长度检查。
下面是XOR Cipher Wikipedia article中代码示例的变体:
示例(Python 2):
相关问题 更多 >
编程相关推荐