pythonでAESを使って暗号化を行いたいのですが、以下のコードだと暗号文が長くなってしまうので短く収めたいです
暗号文が毎回変わらないのであれば短く収まるのですが、毎回変わる場合長くなってしまいます
暗号文を短くするには、どの様に書けばいいでしょうか?
lang
1# -*- coding: utf-8 -*- 2 3import base64 4from Crypto import Random 5from Crypto.Cipher import AES 6 7 8class AESCipher(object): 9 def __init__(self, key, block_size=16): 10 self.bs = block_size 11 if len(key) >= len(str(block_size)): 12 self.key = key[:block_size] 13 else: 14 self.key = self._pad(key) 15 16 def encrypt(self, raw): 17 raw = self._pad(raw) 18 iv = Random.new().read(AES.block_size) 19 cipher = AES.new(self.key, AES.MODE_CBC, iv) 20 return base64.b64encode(iv + cipher.encrypt(raw)) 21 22 def decrypt(self, enc): 23 enc = base64.b64decode(enc) 24 iv = enc[:AES.block_size] 25 cipher = AES.new(self.key, AES.MODE_CBC, iv) 26 return self._unpad(cipher.decrypt(enc[AES.block_size:])) 27 28 def _pad(self, s): 29 return s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs) 30 31 def _unpad(self, s): 32 return s[:-ord(s[len(s)-1:])] 33 34 35cipher = AESCipher("SDAfg8qgv205nvu9q28nvhduhn") 36print cipher.encrypt("asdfghjk") 37#暗号化された文 38 39
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/12/17 03:05