2008年8月18日月曜日

Googleの暗号化ツールKeyczarをPythonで使う

このブログ記事をはてなブックマークに追加

Keyczarから持ってきたKeyczar Python (0.5b)を適当なディレクトリに展開し、srcファイル内のkeyczarをPythonディレクトリのsite-packatesにコピーする。次に、PyCryptosimplejsonASN.1 tools for Python から必要なモジュールをダウンロードしインストールする。

KeyczarToolのPythonの実装として、keyczart.pyが提供されているのでこれを利用する。ただし、これにはバグがあり、そのままだとAddKeyを実行できない。詳細は以下に報告されている。

Issue 21: Incorrect AddKey() Call from keyczart.py main()

対処方法としては、svnで最新版を持ってくるか、以下のようにソースを修正する。

keyczart.pyの113行目の

def AddKey(loc, status, crypter=None, size=None):



def AddKey(loc, status, size=None, crypter=None):

に変更する。

実際に平文を暗号文にし、さらにそれを平文に戻してみる。その前に鍵を作る必要があるので、keyczart.pyで作成する。--locationには鍵を作成したいディレクトリを指定すること。

keyczart.py create --location=C:\users\keyczar\keyset --purpose=crypt
keyczart.py addkey --location=C:\users\keyczar\keyset --status=PRIMARY

ここで気を付けなくてはならないのは --status=PRIMARY で指定する文字を大文字にする必要があることだ。マニュアルやコマンドの使い方では小文字になっているが、小文字で指定すると鍵の情報が正しく書き込まれない。たぶんバグだろう。

で、ここまで準備ができれば後は以下のように使用できる。

#!/usr/bin/env python from keyczar import keyczar crypter = keyczar.Crypter.Read(r"C:\users\keyczar\keyset") ciphertext = crypter.Encrypt("Test message!") print ciphertext plaintext = crypter.Decrypt(ciphertext) print plaintext

出力:

AeEDTVSdw1Q-im3koR1BbfgTVVbAWUhX-_4hY23S0cTtKOtdFsTmKi-U9eM6-5Z9MlkOGUhwX54T Test message!

0 コメント: