Pythonでファイルを復号化する方法
Pythonでファイルを復号化する方法
以下はPythonでファイルを復号化する詳細なステップバイステップチュートリアルです。
ステップ1:必要なライブラリのインポート
まず、ファイルの操作と暗号化に必要なライブラリをインポートする必要があります。このチュートリアルでは、暗号化と復号化にcryptographyライブラリを使用します。
from cryptography.fernet import Fernet
ステップ2:暗号化キーの生成または取得
ファイルを復号化するためには、それを暗号化するために使用された暗号化キーが必要です。既に暗号化キーを持っている場合は、このステップをスキップしてください。それ以外の場合、次のコードを使用して新しい暗号化キーを生成できます。
def generate_key():
key = Fernet.generate_key()
with open("encryption_key.key", "wb") as key_file:
key_file.write(key)
このコードは新しい暗号化キーを生成し、それをバイナリ形式のencryption_key.keyという名前のファイルに保存します。
ステップ3:暗号化されたファイルの読み取り
次に、復号化したい暗号化されたファイルを読み取る必要があります。指定した場所にファイルが存在することを確認してください。
def read_file(filename):
with open(filename, "rb") as file:
encrypted_data = file.read()
return encrypted_data
このコードは暗号化されたファイルの内容を読み取り、バイナリデータとして返します。
ステップ4:ファイルの復号化
暗号化キーと暗号化されたデータを使用して、ファイルを復号化できます。
def decrypt_file(key, encrypted_data):
fernet = Fernet(key)
decrypted_data = fernet.decrypt(encrypted_data)
return decrypted_data
このコードは暗号化キーでFernetクラスを初期化し、decryptメソッドを使用して暗号化されたデータを復号化します。
ステップ5:復号化データの保存
最後に、復号化されたデータを新しいファイルに保存できます。
def save_decrypted_data(decrypted_data, output_filename):
with open(output_filename, "wb") as file:
file.write(decrypted_data)
このコードは復号化されたデータをoutput_filenameで指定された新しいファイルに書き込みます。
完全な例
以下はすべてのステップをまとめた完全な例です。
from cryptography.fernet import Fernet
def generate_key():
key = Fernet.generate_key()
with open("encryption_key.key", "wb") as key_file:
key_file.write(key)
def read_file(filename):
with open(filename, "rb") as file:
encrypted_data = file.read()
return encrypted_data
def decrypt_file(key, encrypted_data):
fernet = Fernet(key)
decrypted_data = fernet.decrypt(encrypted_data)
return decrypted_data
def save_decrypted_data(decrypted_data, output_filename):
with open(output_filename, "wb") as file:
file.write(decrypted_data)
# 暗号化キーの生成または取得
generate_key()
# 暗号化されたファイルの読み取り
encrypted_data = read_file("encrypted_file.txt")
# ファイルの復号化
with open("encryption_key.key", "rb") as key_file:
key = key_file.read()
decrypted_data = decrypt_file(key, encrypted_data)
# 復号化データの保存
save_decrypted_data(decrypted_data, "decrypted_file.txt")
実際の暗号化されたファイルのパスには"encrypted_file.txt"を、出力ファイル名には"decrypted_file.txt"を指定してください。
以上です!提供された暗号化キーを使用して、復号化されたファイルを取得できました。