Flex で SharedObject を暗号化する…多分。
毎日、毎日ちゃんとブログを書くのは無理!
ていうか Flex で遊んでるせいで新人の方の研修用資料作りが全然進んでません。Flex は何か楽しくて、肩がこったり、頭痛がしだしたりしなければずっと書いてたいと思うくらいです。まあやり始めだからと思うんですが。
で今日の内容をちゃっちゃと。具体的には SharedObject を暗号化してくれるっぽい以下のサンプルを試してみたのでその時のメモです。
Encryption in Flex Applications 1 - Simulate EncryptedLocalStore - DevelopRIA
何を import すればいいか
サンプルコードの中に import 文が書いてないので一応。まあ 次の記事 に書いてあるんですが。。
import com.hurlant.crypto.Crypto; import com.hurlant.crypto.symmetric.ICipher; import com.hurlant.crypto.prng.Random;
保存したい文字列を引数で渡す(ちょっと汎用化?)
コードは会社にあるので書けません!(おい)
どんな渡し方がいいだろうと考えましたが、以下のような方法を考えました。
- encryptedSave() に new Array("キー1", "値1", "キー2", "値2") を渡す
サンプルだったらこんな感じです。
new Array("username", username.text, "password", password.text)
- encryptedSave() で確かこんな感じで Array の要素毎に writeUTF()
for (var i:uint = 0; i < arr.length(); i++) { cleartextBytes.writeUTF(arr[i]); }
- encryptedLoad() で空の Array を用意して、encryptedBytes.readUTF() を 2 回ずつ実行、それぞれを配列のキー、値として Array に追加
- 上を try catch の中でやってエラーが起きたらそこで終了、作った Array を返す
- 返ってきた配列を arr に入れたとしたら arr["username"] みたいにしてユーザー名が取得可能、undefined じゃないかチェックしてから使う
SharedObject が空のときにも対応
encryptedLoad() の
var dataToLoad:ByteArray = so.data.ws_creds;
の前で so.data.ws_creds が null だったら空の配列を返すようにしとけば
まだ一回も保存したことがない時でも動きます。
今日はこんだけ!地震も起きたことですしね(無関係)。