Archive for the ‘php’ tag
2009/02/24 00:10
PHP/ming でケータイ用SWFファイルを書き出すとき
備忘録も兼ねて。
- SWFPrebuiltClipクラスでライブラリからムービークリップを呼び出すように外部SWFファイルを扱うことができる。動的にSWFコンテンツを作るための肝となる仕組み。
- 参考サイトは以下でとりあえずなんとかなりそう。
- http://www.gazbming.com/
- http://redhot.pepper.jp/ming_php/
- PHPマニュアルのMing部分
ちなみに、Ming 0.40 RC2 はほぼ問題なくインストールできました。一つだけmakeしたあとにmake installが通らないところがあったんだけど、Makefile を直接書き換えたら上手く動きました。
install: all
$(INSTALL) -d "$(DESTDIR)"/`php-config --extension-dir`
$(INSTALL) -m 755 tmp/modules/ming.so" "$(DESTDIR)"/`php-config --extension-dir`
となっていたところを、
install: all
$(INSTALL) -d "$(DESTDIR)"/`php-config --extension-dir`
$(INSTALL) -m 755 "tmp/modules/ming.so" "$(DESTDIR)"/`php-config --extension-dir`
と、tmpの前のダブルクォーテーションを付け足しました。今のところ順調に動いてます。
2009/02/09 17:06
[Flash / PHP] AMFPHPをHTTPS上で使用したらデータ欠損が
AS3コンテンツの裏側を開発するお仕事で、「個人情報をサーバへ送信するので、AMFとはいえセキュアな通信を使ったほうがいいです」とお話しして、AMFPHPをHTTPS通信で使っているんですけど。
どうもですね、数字から始まる文字列を、数字と誤認するらしく、数字じゃなくなったところからの文字列データが欠損するんですよ。
今回の案件ではMD5ハッシュを送っているんですが、
387748aa8ccbd29dddcdcf4ef23ebd9ac6a468c06eca10d53c6937650abb462f
っていう文字列があった場合、クライアントからAMF3を使ってPHPに届いたとき、
387748
って値に変わっているんです。
HTTPのときはなんともなかったから、おそらくHTTPS上の問題かと思います。
と書きながらAMFPHPのフォーラムを流し読みしてたら、同じこと書いている人がいた。
[BUG FOUND] Strings are accidentally cut off
http://sourceforge.net/forum/forum.php?thread_id=2793136&forum_id=247252
この人はセキュアかどうかは書いてないけど、同じ理由なのかな。こういう基本的なバグは早く直してもらいたいなー。
2009/01/04 21:56
FlashとPHPで可逆暗号処理(as3crypto, MCrypt)
とあるお仕事で、Flash(AS3)とPHPとの間でテキスト通信内容の一部を可逆暗号処理する必要が出てきて、調査をしていました。
おそらく、AS3ならas3cryptoが、PHPならMcrypt関数がベーシックなチョイスだろうと、早速使っていたんですが、これがまたうまいこといきません。
まだ完全に理由が調査できていないんで、はっきりとしたことが言えないのがあれなんですけど、これから調査する時間があるかどうかわからないんで、状況を書くだけ書いておきます。
- as3ctyptoでblowfish暗号(CBCモード)の初期化ベクトルのサイズがPHPのと合わない。
自分も暗号化の知識とかPHPのMCrypto関数の使用方法が完璧かと言われると、ちょっと自信ないです。でも調べる限り、blowfishは初期化ベクトルのサイズが64ビット、つまり8バイトなはずなんですけど、as3cryptoで初期化ベクトルを取得すると16バイトになってしまう。どうやっても。PHPでは8バイトを求められる…う〜む。ASだけだと動くんですよね。 - では、ということで、初期化ベクトルを使わなくてもいい(セキュリティ的にはよくないですが)ECBモードで暗号化→復号化してみたところ、PHPで暗号→AS3で復号のパターンで、暗号化対象のデータが32バイトを超えるとas3cryptoが値を返してこなくなる。31バイトまではうまくいきました。これはもしかしたら自分の認識が足りないだけかも。
- それぞれパディングの方法が違うみたい。as3cryptoは一応選べるので、今回はPKCS#5方式でやっていたが(というか、なぜかNullPadでは動きませんでした)、PHPだと自分でパディングするしかない?のか、MCrypt関数にはそれらしきモノは見当たらず。結果AS3暗号化→PHP復号化すると、データのおしりにゴミが残ってしまう…。
Blowflshという暗号方式を各言語で別々に実装しているから、挙動が異なるのはわからんでもないけど…さすがに知識が中途半端では原因究明はちょっと厳しいですね。時間がかかる。