2019年9月2日1.つづきPythonで、PKCS#12の公開鍵で暗号、秘密鍵で復号するプログラムの続きです。今回はAESで暗号化/復号を行い、通信しながらRSA暗号/復号,AES暗号/復号を組み合わせたいと思います。サンプルコード(aes.py)サンプルコード(aes.py)は以下になります。{}".format(decrypted_data))ここでは暗号データを利便性のため、以下の辞書にしました。nonceは事前に設定することも可能ですが、APIから戻ってくる値を使用しています。暗号利用モードとはAESのようなブロック暗号方式は、そのまま使用すると、その鍵と同じデータ長(==ブロックサイズ)しか暗号化できません。「暗号利用モード」とは、ブロックサイズよりも、長いメッセージを暗号化または復号化するために、ブロック暗号を使用する方法を言います。「モード」というほうが多いと思います。素直に、暗号鍵でデータを暗号化/復号するのは「モード」で言えば、ECBになりますが、近年ではあまり使われません。昔にAESで暗号化したときは、CBCモードを使用しました。今なら違うモードを使用するでしょう。「暗号利用モード」をどう決めるか「暗号利用モード」は、暗号をどのようにシステム適用するかによって、何を使用するか変わってきます。だいたいは要件を加味しつつ決めることになるでしょう。ここでは、通信に使用するので、CTRを使用しました。後述しますが、認証が不要だったのでストリーム暗号用モードから選びました。CTRのいいところは、ストリーム暗号として使用できるため、暗号データの長さが任意なことです。コード的には、以下で設定しています。AES.MODE_CTRがそれです。AES.MODE_CTR)Cryptodomeで使用できる暗号モードと簡単な特徴は以下になります。(1)ストリーム暗号用モードブロック暗号を、ストリーム暗号のように使用できるように設計されたモードのことです。IVをあらかじめ決めておく必要あり。