[解決済み] PyCrypto AES 256による暗号化・復号化
2022-03-08 08:15:55
質問
PyCryptoを使って、メッセージと鍵という2つのパラメータを受け取り、メッセージを暗号化/復号化する関数を2つ作ろうとしています。
ウェブ上でいくつかのリンクを見つけたのですが、それぞれに欠点があります。
codekoalaのこれ は os.urandom を使用しますが、これは PyCrypto では推奨されません。
さらに、私が関数に与えるキーは、期待される正確な長さを持つことが保証されていません。どうすればいいでしょうか?
また、いくつかのモードがありますが、どれがおすすめですか?何を使えばいいのかわかりません :/。
最後に、IVとはいったい何なのでしょうか?また、暗号化時と復号化時で異なるIVを指定した場合、異なる結果になるのでしょうか?
編集 : 安全でないため、コード部分を削除しました。
解決するには?
ここで私の実装といくつかの修正と私のために動作し、16バイトに32バイトとIVとキーと秘密のフレーズの整列を強化することである。
import base64
import hashlib
from Crypto import Random
from Crypto.Cipher import AES
class AESCipher(object):
def __init__(self, key):
self.bs = AES.block_size
self.key = hashlib.sha256(key.encode()).digest()
def encrypt(self, raw):
raw = self._pad(raw)
iv = Random.new().read(AES.block_size)
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return base64.b64encode(iv + cipher.encrypt(raw.encode()))
def decrypt(self, enc):
enc = base64.b64decode(enc)
iv = enc[:AES.block_size]
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return self._unpad(cipher.decrypt(enc[AES.block_size:])).decode('utf-8')
def _pad(self, s):
return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)
@staticmethod
def _unpad(s):
return s[:-ord(s[len(s)-1:])]
関連
-
python call matlab メソッドの詳細
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Python 可視化 big_screen ライブラリ サンプル 詳細
-
pyCaret効率化乗算器 オープンソース ローコード Python機械学習ツール
-
[解決済み] データ型が理解できない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】IndexError: invalid index to scalar variableを修正する方法
-
[解決済み] 関数内でグローバル変数を使用する
-
[解決済み] Java 256ビットAESパスワードベース暗号化機能
-
[解決済み】forループを使った辞書の反復処理
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】Python regex AttributeError: 'NoneType' オブジェクトに 'group' 属性がない。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】pygame.error: ビデオシステムが初期化されていない
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】 'numpy.float64' オブジェクトは反復可能ではない