ねぇねぇ、聞いて聞いて〜❗️ あのQiitaのピンバッジ記事🏅
超ムズい暗号かけちゃったんだけど、マジ誰も解けなかったの〜😱
運営さんもシーン…ってなっちゃって、ちょっと寂しかったけど、これってつまり誰も解けなかったってことだよね〜😅
でもさ〜、AESとRSAの組み合わせって、マジ最強じゃね❓🔥
暗号界のパワーカップルみたい〜💑✨
そして下のが暗号解読コード、超カッコよくない❓🖥️💕
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.primitives import padding
from Crypto.PublicKey import RSA
from Crypto.Cipher import PKCS1_OAEP
# RSAでの復号化関数
def decrypt_rsa(encrypted_data, private_key):
cipher = PKCS1_OAEP.new(private_key)
return cipher.decrypt(encrypted_data)
# AESでの復号化関数
def decrypt_aes(encrypted_data, key, iv):
cipher = Cipher(algorithms.AES(key), modes.CBC(iv))
decryptor = cipher.decryptor()
unpadder = padding.PKCS7(algorithms.AES.block_size).unpadder()
decrypted_data = decryptor.update(encrypted_data) + decryptor.finalize()
unpadded_data = unpadder.update(decrypted_data) + unpadder.finalize()
return unpadded_data
# 暗号化されたメッセージとAESキーのパート(暗号化スクリプトの出力を使用)
encrypted_message_hex = "d3cde2fd5de49a0a5ed9891ef0691175ebf3516426a3c0b10f4c882e2ba8064f9a00ba8c1f993825ba2ded3c67b2989a9a6d12038b64967959590b61ff81f6498a80f526929b70c56745798e0bc51cb7"
encrypted_aes_key_part1_hex = "6860b1d811e8d295887aec6197dfd934b79c9082827a78efd8176a092482c4677e177c99710376020a057a4c8047300deff370700240709ef9ef24d22285af60c5c1390d7b1c1a93308ea15a9a5efa5292acf47178f990f8b8ed3a52a1bacc39f276d31c8d46c7b95be4b8aa0e99fc4a1f85090007b242fd1fc739032962646698d63593ec68d083d1823e9a10ba1cc379ccf54d331cb9f9df4d85648ef97c1eedc7f76a6a793f051d762d77751dc1486b45363c4b31ac0da2c73e0cad37c02526ea86be363d29ed14ceea7483969dc7399afec4c1243e2f6591f90f758d96ab434944efaae730384612b8ead430f4c4a33603f74efcff365b64e85bc61e4a11"
encrypted_aes_key_part2_hex = "8485c0a9f09be56e6d50eb46f1fc964d8a6179eca89b835a82ac90950ad623d340d63618a1b43b9fbf56b7bb2c2f914c343899d62f1e1c9246e287ddfe27656cefc58006afc8b8bc65a73cc0f1a456cd5e93f7e28dde138e382803f9ae68fa117afed76d7a27a5b01571d76910402c26f1d3a2f25c081d5aebd82571f5c20f9d81d6f401e3c4e5b4370712e36d3b6cf00e4fd9be7749f69d34a8f5d7058bcb1e8646fab625d1dac6da02ffb1b712b5c8805e7caf148e304b45e165ed7dd11dce039e563f0ac32fbb81d1330b791997ac11cd5da2663a7d5fc27e5a68baab67987f57849f0e2f201b7973167b661c3f44aee9fffee7cf1ecbcb25344aae4a556b"
# Hex形式の暗号化データをバイト形式に変換
encrypted_message = bytes.fromhex(encrypted_message_hex)
encrypted_aes_key_part1 = bytes.fromhex(encrypted_aes_key_part1_hex)
encrypted_aes_key_part2 = bytes.fromhex(encrypted_aes_key_part2_hex)
# RSA秘密鍵の読み込み
with open("private.pem", "rb") as f:
rsa_private_key = RSA.import_key(f.read())
# RSAでAESキーの各パートを復号化
aes_key_part1 = decrypt_rsa(encrypted_aes_key_part1, rsa_private_key)
aes_key_part2 = decrypt_rsa(encrypted_aes_key_part2, rsa_private_key)
# 復号化されたAESキーの再結合
aes_key = aes_key_part1 + aes_key_part2
# AESでメッセージを復号化
iv = encrypted_message[:16]
ciphertext = encrypted_message[16:]
decrypted_message = decrypt_aes(ciphertext, aes_key, iv)
# 結果を表示
print("復号化されたメッセージ:", decrypted_message.decode())
解説、超わかりやすくしちゃうよ〜🧠💫
このコードって、RSAとAESがコラボしちゃった超ヤバい暗号システムを解読しちゃうやつなの❗️ マジすごくね❓😍
まずは、必要なライブラリを呼んじゃう📚✨
解読する関数を作っちゃう🔓
暗号化されたメッセージとか、準備しちゃう📝
16進数をバイトに変身させちゃう🔄
RSAの秘密鍵、こっそり読み込んじゃう🔑
RSAでAESキーを解読、バラバラだったのを合体させちゃう🧩
AESでメッセージを解読、超ドキドキ💓
解読したメッセージ、ついに見れちゃう〜👀💕
このコードって、RSAの安全性とAESの速さをミックスしちゃった超賢いやつなの❗️
セキュリティも完璧〜😘👌
まとめ
ちなみにさ〜、解読したメッセージ、超かわいかったでしょ〜💖
「私はどうしてもQiitaピンバッジが欲しいです♡」
だって〜😍 めっちゃ共感しちゃう〜❗️💕
暗号化って、マジでクールだよね〜😎✨
と言うことで今回も自分のコードと記事をAIにギャル語にしてもらいました。
明らかに自分が書いた記事より理解しやすくなっていると思います。
また親しみやすい?気もしますね!
最近は自分の記事以外にも般若心経をギャル語にしたりしながら楽しんでいます。
是非皆さんも暗号化はもちろんのことAIもしっかり活用していってください。