0

これは、ワンタイム パッドを復号化するために作成した Python プログラムですが、プログラムがデコードされたファイルの先頭に空白行を残しています。なぜ行を離れているのかはわかりませんが、どのように関連しているのかはわかっています。一番上の行を使用してファイルの名前を保存し、それを使用して復号化されたテキストのファイルに名前を付け、一番上の行を消去しますが、削除する方法がわかりませんファイルの空白行。

import os

q = 1
while q == 1: 
    #opens the cipher text and it converts it to decimal
    cipher = raw_input("cipher text: ")
    cipher1 = open(cipher, "r")
    cipher2 = cipher1.read()
    cipher3 = [ord(c) for c in cipher2]

    #opens the key and coverts it to decimal
    key = raw_input("key: ")
    key1 = open(key, "r")
    key2 = key1.read()
    key3 = [ord(c) for c in key2]

    #subtracts the key from the cipher
    a = cipher3
    b = key3
    c = map(lambda x: (x[0]-x[1]) % 256, zip(a,b))

    #prints out the decrypted plain text
    decrypt = ''.join(map(chr,c))

    string1 = decrypt.index('\n')
    name = decrypt[0:string1]

    #makes a file with the decrypted output
    path1 = raw_input("out folder: ")
    path2 = path1 + "/" + name

    string3 = decrypt.index('\n')
    length = len(decrypt)
    decrypt = decrypt[string1:length]

    if os.path.exists(path2):
        f1 = file(path2, "a")
        f1 = open(path2, "a")
        f1.write(decrypt)
        f1.close()
    else:
        f1 = file(path2, "w")
        f1 = open(path2, "w")
        f1.write(decrypt)
        f1.close()
    print 50*"-"
4

2 に答える 2

2

string1 を行末に向けます。

string1 = decrypt.index('\n')

ただし、次の行の場合、次の文字からスライスする必要があります:

decrypt = decrypt[string1:length]
于 2013-08-02T02:50:55.600 に答える
1

変化する

decrypt = decrypt[string1:length]

decrypt = decrypt[string1+1:length]
于 2013-08-02T02:44:12.080 に答える