OpenSSL使って暗号化するプログラム書いた事がなかったので何と無く書いてみました。
Pythonでcryptographyを利用しています。
秘密鍵と公開鍵はコメントに書いてある感じでサクッと作ればOK
import json
from datetime import datetime
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import padding
# 次のコマンドで秘密鍵と公開鍵を生成
# $ openssl genrsa 2024 > private.key
# $ openssl rsa -pubout < private.key > public.key
# 秘密鍵
with open("private.key", "rb") as f:
private_pem = f.read()
private_key = serialization.load_pem_private_key(private_pem, password=None)
# 公開鍵
with open("public.key", "rb") as f:
public_pem = f.read()
public_key = serialization.load_pem_public_key(public_pem)
# 現在の時刻
dt_now = datetime.now()
# データを用意する
data_json_txt = json.dumps({
'date': dt_now.isoformat(),
'body': "Hello world!",
})
# 暗号化
ciphertext = public_key.encrypt(
data_json_txt.encode(),
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
# データの復号化
plaintext = private_key.decrypt(
ciphertext,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(ciphertext)
print(plaintext.decode())
できたはず!
以上