1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

pythonでAES暗号化する方法:①cryptography.fernet編

Last updated at Posted at 2024-01-19

やりたいこと

pythonでAES(共通鍵方式)でパスワードの暗号化・複号化したい

前提

・Pythonインストール済み
・cryptographyライブラリインストール済み

やり方

さっそく調べた内容をソースコードで作りました
cryptography.fernetはAES128CBCモードで暗号化複号化しているらしいです。
暗号化複号化するときは、パラメータはbyte形式じゃないとだめなので、strをbyteへ変換しました・

qiita.rb
from cryptography.fernet import Fernet


# 鍵作成
def create_key():
    key = Fernet.generate_key()
    print(key)
    print(key.decode('utf-8'))
    return key.decode('utf-8')


# 暗号化する
def encrypt(key: str, data: str):
    fernet = Fernet(bytes(key, 'utf-8'))
    encrypted_pass = fernet.encrypt(bytes(data, 'utf-8'))
    print(encrypted_pass)
    print(encrypted_pass.decode('utf-8'))
    return encrypted_pass.decode('utf-8')


# 復号する
def decrypt(key: str, data: str):
    fernet = Fernet(bytes(key, 'utf-8'))
    decrypted_pass = fernet.decrypt(bytes(data, 'utf-8'))
    print(decrypted_pass)
    print(decrypted_pass.decode('utf-8'))
    return decrypted_pass.decode('utf-8')


password = 'password'
print(password)
key = create_key()
encrypted_pass = encrypt_password(key, password)
decrypt_password(key, encrypted_pass)


結果をprintすると、このようになります。
上から下までは、パスの初期値、鍵(バイト)、鍵(str)、暗号化したパス(バイト)、暗号化したパス(str)、複号化したパス(バイト)、複号化したパス(str)
image.png

ちなみにですが、鍵は毎回新しいものを作る必要がなくて、以前作ってたものを覚えて流用するもの大丈夫とのことでした。

やり方

暗号化をかけたら、値が結構長くなりましたね。。。

参考サイト

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?