PyCrypto AES-256 による安全な暗号化と復号化
PyCrypto は、Python での暗号化操作のための堅牢なライブラリです。一般的なタスクの 1 つは、機密データの保護に使用される業界標準の暗号化アルゴリズムである AES-256 を使用してデータを暗号化および復号化することです。
問題の定義:
信頼性の高い暗号化の構築PyCrypto を使用した復号化関数では、いくつかの潜在的な問題に対処する必要があります:
セキュリティと機能の強化:
これらの懸念に対処するために、PyCrypto を使用した実装が開発されました。
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 AESCipher._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:])]
キーと IV の拡張:
暗号化モード:
この実装では、CBC (Cipher Block Chaining) モードで AES-256 を使用します。ブロック内のデータを暗号化するには CBC モードが推奨され、IV は各ブロックが確実に一意に暗号化されるようにするために使用されます。
IV に関する考慮事項:
IV は重要な値です。安全に生成する必要があります。暗号化と復号化に異なる IV を使用しても結果には影響しませんが、復号化を成功させるには、IV が暗号化中に使用された IV と一致する必要があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3