«

»

11月 23

PyCryptoを使ってAES暗号化してみる

参考:PyCrypto API Documentation
Pythonメモ: PyCryptoで暗号化する

インストール

$ sudo apt-get install python-pycrypto

使ってみる

#coding:utf-8
from Crypto.Cipher import AES
from Crypto import Random

key = 'sDG^>"yZBDKKc)@9'
iv = Random.new().read(AES.block_size)
iv_len = len(iv)
cipher = AES.new(key,AES.MODE_CBC,iv)

msg = 'testtesttesttest'
encrypted_msg = iv+cipher.encrypt(msg)

iv = encrypted_msg[:iv_len]
cipher2 = AES.new(key,AES.MODE_CBC,iv)
decrypted_msg = cipher2.decrypt(encrypted_msg)[iv_len:]

print msg
print encrypted_msg
print decrypted_msg

こうやらないとうまくいかなかった…謎.
最初は初期化ベクトルIVを忘れてて手間取った… なんでみんなECBでやってんの…脆弱すぎでしょ

まず暗号化済みメッセージにIVを付加してから復号化しないとなぜか間違った文字列になってしまう.
あとそうすると復号化メッセージにゴミが入るのでスライスして除去.
まともなやり方ないのかなぁ…

Permanent link to this article: http://lga128.nekobaka.net/2012/11/use_pycrypto_aes/

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次の HTMLタグおよび属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Time limit is exhausted. Please reload the CAPTCHA.