Affamative Way

前向きにグダグダいいながらコード書く

win環境でmcryptを使う

今日も今日とて暗号化と格闘。
ログイン状態をクッキーにて保持するのに復号できる暗号化をしたいなーと思ってやってみる。


思いっきり情報が少なさにやられてましたが。。。
winでPHPやってる人って少ないのか不安に思えるほど情報があんまりなかったので以下まとめログ


PHP: Mcrypt 暗号化関数 - Manual

ここで示す関数は、> mcrypt を 使用して動作します。この拡張モジュールを使用するには、>http://mcrypt.sourceforge.net/ から libmcrypt-x.x.tar.gz をダウンロードし、含まれているインストール用の指示に従ってください。 Windows ユーザは、コンパイル済みの mcrypt バイナリを ? http://files.edin.dk/php/win32/mcrypt/ から入手することが可能です。

ということなので早速、ダウンロードしてPHPのインストールパスC:\usr\local\php5 に配置しようとしたら、最初からlibmcrypt.dllが入ってるよ。。。
libmcrypt のバージョンによって使えるアルゴリズムに違いがあるらしいが、初期から入ってるlibmcrypt のバージョンが解らんかったので、とりあえず最新にしておく。

on php.ini

・・・・
extension=php_mcrypt.dll
・・・・
[Mcrypt]
mcrypt.algorithms_dir=C:\usr\local\php
mcrypt.modes_dir=C:\usr\local\php
・・・・

とりあえず、拡張ライブラリのコメントアウトを外して、mcrypt関連の設定を追記してApacheを再起動


しかーし、php_mcrypt.dllの読込でこけてる。。*1
on error.log

PHP Warning:  PHP Startup: Unable to load dynamic library 'C:\\usr\\local\\php5/ext/php_mcrypt.dll'
・・・・ in Unknown on line 0

んで、この辺参考にしてみると・・・
Channel Jomora :: PHP Windows環境でmcryptを有効にする
PHP-users 22279 Re: mcrypt_ecbはWindows版で使えるか?

どうやら、c:\WINDOWS直下に置くとちゃんと動くようになるらしい。。
早速試すと。。。ちゃんとうごいたーー実行完了っ!


C:\\usr\\local\\php5/ 自体はパスが通っているのになぜWINDOWS以下に配置しないと動かないんだろうとどうにかできんか色々と試したものの、どうにもならず。。。誰か教えてエロイ人


とりあえず有効になっているようなので妥協することに。
無事、公式のサンプルも動くようになり。暗号〜復号が使えるようになりましたー


しかし、また不穏なものが。。。。
mcryptで不正な長さのIVや鍵を渡した場合 - Do You PHP はてな


どうしようかな。。。(ツヅク カモ)

*1:確認はphpinfo()でmcryptが有るか確認したがなかった