Keyczarから持ってきたKeyczar Python (0.5b)を適当なディレクトリに展開し、srcファイル内のkeyczarをPythonディレクトリのsite-packatesにコピーする。次に、PyCrypto、simplejson、ASN.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!
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!
コメント