PyCrypto AES-256을 사용한 안전한 암호화 및 복호화
PyCrypto는 Python의 암호화 작업을 위한 강력한 라이브러리입니다. 일반적인 작업 중 하나는 민감한 데이터 보호에 사용되는 업계 표준 암호화 알고리즘인 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