2009/10/25
FlashLite1.1:SHA1する
手元のケータイでしか確認してませんが実機でも動きます。
前回の md5 では FlashLite の Infinity に屈したわけですが、今回は対策を練ってから。
int の上位ビットに数値がかかると、桁があふれて Infinity になるため、
内部で int を 1/16 したまま扱ってしまうような設計にしました。
ソース内で xint と記述しているのがそうですが、
int の符号を再現するために Windows の「電卓」がかなり役に立ちましたw
http://faces.jp/2009/10/25/sha1.swf
ソースをダウンロード
符号再現のあたりでビット演算のために2の乗数での剰除を繰り返してますが、
負の数に対しての "%" 演算結果が、DeviceCentral(FL1.1,FL2.1) と実機で違ってる。
実機の結果は Flash4(PC) で走らせた結果と同じになるんだけど、これはCS3だからかも?
また、md5 では50KBを超えた swf も、call のおかげで今回は10KB以下に抑えられましたが
最後に残念なお知らせというか、期待通りのオチがあります。
OAuth のようなことをしたくてこれを作ったのですが、
どんな短い String でも実機上での hash に10秒以上かかります。
ケータイはキー押下すぐのタイミングでしかリクエストを送れないので、
これじゃ全然間に合いません。
一番処理を食っているのは int のエミュレーションですが
FL2 であれば十分実用に足るものが作れるに違いないと我々は信じてやみません。