質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

3437閲覧

pythonのAES暗号化

退会済みユーザー

退会済みユーザー

総合スコア0

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2016/12/17 02:31

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

AESはそもそもの設計が128ビット(16バイト)のブロック暗号なので、どれだけ短いものを暗号化しても最低限その長さになります。

投稿2016/12/17 02:39

maisumakun

総合スコア145123

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/12/17 03:05

暗号化してb64encodeの際に文字を足してるのでそこをうまく減らせないかと…… 暗号が毎回かわらないのであれば割と短く治るのですが… 何かアイディアはありませんか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問