0

バイナリのスニペットを取得し、キーに従って暗号化するプログラムを Python で作成しています。スニペットがキーよりも短い場合、キーの最後のビットを取得する必要があるため、二重の逆になります。私の問題は、キーの最後の部分を空白のリストに追加しようとしたときに発生し、「リスト インデックスが範囲外です」というエラーが表示されます。コードは次のとおりです。

def OTP(msg,clave):
encList = []
encr = ''
clist = list(clave)
clist.reverse()
cutlist = []
mlist = list(msg)
mlist.reverse()
for i in range(len(msg)):
    cutlist.append(clist[i])
for i in mlist:
    for j in cutlist:
        if i == j:
            encList.append(0)
        if 1 != j:
            encList.append(1)
encList.reverse()
for i in encList:
    encr += str(encList[i])
return encr

clave = '000000010011010010001001000110110011001101010011100101010000101100111110000010100000011010010000101100000101100011010110100000100110001011001101101110110101000010000010100101000101101101010010001100001100100010111111111110010011101110010101110100111110000001101111110010000000101011000101111110100100101000110010111001100110011010100011011001101010011111100101'
msg = '01101000011010000110100001101000'

cript = OTP(msg,clave)
rev = OTP(cript,clave)
print(rev)

メッセージの長さの範囲を指定していますが、これははるかに長いキーの範囲内にある必要があります。いつものように、助けていただければ幸いです。

4

1 に答える 1