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 つのファイルfile
とoutput
は異なっていました。入力ファイルはバイナリファイル(私が欲しいもの)だったので、スクリプトを次のように変更しました:
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
が、これも機能しません。
助言がありますか ?備考 ?チップ ?
ありがとう