【Python】ファイルを暗号化・復号する方法

本記事ではPythonでファイルを暗号化する方法について超わかりやすく解説しています。Pythonは非常に人気なプログラミング言語です。そんなPythonのファイル暗号化方法を一緒に学習しましょう!

本記事の目標

本記事は、Pythonでのファイルの暗号化とその復号について紹介しています。
Pythonでの暗号化は下の記事で超詳しく解説していますので、そちらからご覧ください。

pycrypto-python 【暗号化】pycryptodomeの使い方【AES対応】

実行環境は「python 3.8.8」です。

テキストファイルを用意

今回は下のテキストファイルを準備しました。
内容は適当ですが、このテキストファイルを暗号化して復号します。

【極秘】

セリヌンティウスがそちらへ向かいました。
至急メロスを派遣してください。

このメッセージは極秘メッセージのため、絶対にバレぬように。

暗号化

暗号化は下のような感じです。
今回はpycryptodomeを使いましたが、暗号化できるbitの制限に少し苦戦しました。その結果encodeメソッドを多用しています。
ちなみにdat拡張子のファイルはデータファイルのことで、プログラミングなどではなくデータを保存します。

import string
import random
from Crypto.Cipher import AES

# 初期設定
key = ''.join(
    random.choice(string.ascii_letters) for _ in range(AES.block_size)
).encode()
iv = ''.join(
    random.choice(string.ascii_letters) for _ in range(AES.block_size)
).encode()

with open('seacret.txt', 'r') as f, open('complexity.dat', 'wb') as c:
    # 暗号化したいデータの準備
    cipher = AES.new(key, AES.MODE_CBC, iv)
    text = f.read()
    reflesh_length = AES.block_size - len(text.encode()) % AES.block_size
    text += chr(reflesh_length) * reflesh_length

    # 暗号化
    cipher_text = cipher.encrypt(text.encode()) # 暗号化
    c.write(cipher_text)

作った「complexity.dat」は下のような感じ。
2回実行したので2行に渡っていますが、うまくフィルを暗号化できていることがわかります。

復号を含めた全コード

import string
import string
import random
from Crypto.Cipher import AES

# 初期設定
key = ''.join(
    random.choice(string.ascii_letters) for _ in range(AES.block_size)
).encode()
iv = ''.join(
    random.choice(string.ascii_letters) for _ in range(AES.block_size)
).encode()

with open('seacret.txt', 'r') as f, open('complexity.dat', 'wb') as c:
    # 暗号化したいデータの準備
    cipher = AES.new(key, AES.MODE_CBC, iv)
    text = f.read()
    reflesh_length = AES.block_size - len(text.encode()) % AES.block_size
    text += chr(reflesh_length) * reflesh_length

    # 暗号化
    cipher_text = cipher.encrypt(text.encode()) # 暗号化
    c.write(cipher_text)

with open('complexity.dat', 'rb') as f:
    cipher2 = AES.new(key, AES.MODE_CBC, iv)
    decryption_text = cipher2.decrypt(cipher_text)
    print('******復号化したデータ******\n')
    print(decryption_text[:-decryption_text[-1]].decode())
【実行結果】
******復号化したデータ******
【極秘】

セリヌンティウスがそちらへ向かいました。
至急メロスを派遣してください。

このメッセージは極秘メッセージのため、絶対にバレぬように。

ということで本記事はPythonでファイルを暗号化する方法を紹介しました。
最後まで読んでいただきありがとうございました\(^o^)/

超オススメのPC用品

PCを操作する上で、トラックボールマウスが非常におすすめです!
僕も感動したこのマウスを、騙されたと思って使ってみてください!(^^)

外部モニターで2倍以上の効率化が見込めます!
安いものだと、たったの1万円前後なのでおすすめですよー!\(^o^)/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です