2

Pythonで簡単な暗号化スクリプトを実行しようとしています。バイナリ ファイルで XOR 暗号化を使用したいだけです。私のスクリプトは基本的に次のようになります。

def xor_c ( a ):
    v=''
    for p in a:
        v += chr((ord(p) ^ 0xA8))
    return v

これの目標は、各バイトを個別に暗号化することです。これはうまくいくはずですが、私が行ったすべての試みは失敗しました。

私は最初に試しました:

handler = open("file",'r')
handler2 = open("output",'w')
contents = handler.read()
handler2.write(xor_c(xor_c(contents)))

しかし、実行後、2 つのファイルfileoutput は異なっていました。入力ファイルはバイナリファイル(私が欲しいもの)だったので、スクリプトを次のように変更しました:

handler = open("file",'rb')
handler2 = open("output",'wb')
contents = handler.read()
handler2.write(xor_c(xor_c(contents)))

しかし、これはまったく何も変わりませんでした。見た目から、いくつかのバイトが出力で 1 バイトに変換されます (文字が ASCII ではないためかもしれませんが、これはバイナリ モードでは発生しないはずです ...)。さらに、出力の最後のバイトは0xA8(入力ファイルの最後にあるの変換から論理的に取得され\0ます。これを考慮して、xor_c 関数を次のように変更しました:

def xor_c ( a ):
    v=''
    for p in a:
        v += chr((ord(p) ^ 0xA8))
    return v[:-1]+'\0'

最後の文字が常に a になるようにします\0が、これも機能しません。

助言がありますか ?備考 ?チップ ?

ありがとう

4

2 に答える 2