Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修复“中的词典超出范围错误”;异或;?_Python_Python 3.x_Xor - Fatal编程技术网

Python 如何修复“中的词典超出范围错误”;异或;?

Python 如何修复“中的词典超出范围错误”;异或;?,python,python-3.x,xor,Python,Python 3.x,Xor,我正在尝试使用python的“XOR”方法进行加密。我使用字典并应用此算法: def crypt(Line,key): alpha = ' !@#^*()_+"№;:?-={}[]\|/<>.,~`1234567890zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBAяюэьыъщшчцхфутсрпонмлкйизжёедгвбаЯЮЭЬЫЪЩШЧЦХФУТСРПОНМЛКЙИЗЖЁЕДГВБА' new_Line

我正在尝试使用python的“XOR”方法进行加密。我使用字典并应用此算法:

def crypt(Line,key):
   alpha = ' !@#^*()_+"№;:?-={}[]\|/<>.,~`1234567890zyxwvutsrqponmlkjihgfedcbaZYXWVUTSRQPONMLKJIHGFEDCBAяюэьыъщшчцхфутсрпонмлкйизжёедгвбаЯЮЭЬЫЪЩШЧЦХФУТСРПОНМЛКЙИЗЖЁЕДГВБА'
   new_Line = ''
   for i in range(len(Line)):
        code = alpha.find(Line[i]) ^ alpha.find(key[i])
        new_Line += alpha[code]
   return new_Line
def crypt(行,键):
阿尔法='@#^*()_+"№;:?-={}[]\\\/,`1234567890ZYXWVUTSRQPONLKJIHGFEDCBAZYXWVUTSRQPONLKJIHGFEDCBAю
新行=“”
对于范围内的i(len(Line)):
代码=alpha.find(第[i]行)^alpha.find(第[i]键)
新行+=alpha[代码]
返回新行

但是当我尝试加密字符:“П”,“ъ”时,我得到一个236的值,这超过了我的字典的长度,因为它只有158个字符。如何修复这个错误是代码可以毫不含糊地解码。目前,有一个扩展字典(alpha)的想法.

解决此问题的典型方法是将文本编码为UTF-8,并加密定义范围为0-255的字节。@klaus-d,好的,但如何修复代码以使用给定的词典?