2011-11-12 1 views
1

私は自分のAS3ゲームの保存/読み込み機能に取り組んでいます。私は、プレーヤーがブラウザで実行されるゲームからハードドライブにゲームを保存することを計画しています。私は保存しているテキストをスクランブルしたいので、人間がファイルをテキストとして開くと実際にそれを読むことはできません。AS3 - シンプルなテキストスクランブルエンコード/デコード?

保存する前にテキストをスクランブルしてから、開いた後で解読するのは良い方法はありますか?

私はJavaで、charを取り込み、それを加算または減算してcharを変更することができます。これは非常に簡単な方法でした。 ActionScript 3で何が簡単にできるのですか?

私は安全ではなく簡単で簡単に探しています。私が解決策を確認したすべての暗号化サイトは、私が理解できる以上に複雑であり、簡単な統合ではなく、最も安全な暗号化に焦点を当てています。

答えて

2

javaの場合と似たようなことが可能です。

試してみてください。stringは、これは、文字列の各インデックスにある文字の数値Unicode値を取得し、オフセットによってそれが価値だ修正しないものを変更するテキスト、ある

var offset:int = 10; 
for (i = 0; i < string.length; i++) { 

string[i] = string.charCodeAt(i) + offset; 

} 

for (i = 0; i < string.length; i++) { 

string[i] = string.charCodeAt(i) - offset; 

} 
1

なぜテキストを逆転させないのですか?それは簡単で効果的な方法です。

もう1つは、2文字ずつのグループのテキストを分割し、それらを逆順にして、再度文字列を結合することです。

1

rot13これはすばらしく簡単です。 thereのAS3チュートリアルやlibrariesがいくつかあります。もう1つの一般的なオプションはbase64で、既存のlibrariesもあります。

0

変数名ながら、私は(あなたがゲームを保存する方法を知りませんが、あなたはLocal Shared Objectsを使用している場合、あなたのテキストがバイナリデータとして保存されます:あなたは同じコードを実行しますが、逆に復号化するために

人間が読めるままである)。

+0

自動保存のために共有オブジェクトを保存する方法と、ユーザーが手動で保存するためにハードドライブに保存するファイルの2つの方法を使用する予定です。 –

+0

2番目の方法についてもっと教えてください。 – AsTheWormTurns

+0

プレーヤーは、FileReferenceを使用して別のファイルを保存することができます。彼らは限界のフラッシュ(非常に正しく)がブラウザのアプリケーションに置かれるので、彼らが保存するたびに場所を選ぶ必要があるので、自動的に定期的に保存するためにゲームを共有オブジェクトに保存する必要があることがわかります。 [このコードサンプル](http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6#includeExamplesSummary)をご覧ください。ユーザーのハードドライブからファイルをロードします。 –

1

これを本当にしたいのであれば、確立された暗号暗号を使用してみませんか?そして、ここでは、ここでhttp://code.google.com/p/as3crypto/downloads/detail?name=Crypto.zip&can=2&q=

から

取得as3cryptoはRC4(あなたが使用できる多くの暗号の1)を使用する方法は次のとおりです。

import com.hurlant.util.Hex; 
import flash.utils.ByteArray; 
import com.hurlant.crypto.prng.ARC4; 

var key:ByteArray = Hex.toArray("SUPER SECRET PASSWORD THAT YOUR USER WILL FIND OUT IF HE DECOMPILES YOUR SWF ANYWAY"); 
var pt:ByteArray = Hex.toArray("THIS IS THE ACTUAL FILE YOU'RE ENCRYPTING OR DECRYPTING"); 
var rc4:ARC4 = new ARC4(key); 
rc4.encrypt(pt); 
var out : String = Hex.fromArray(pt); 
// save out to file 

// load loadedFile from file 
pt = Hex.toArray(loadedFile); 
rc4.init(key); 
rc4.decrypt(pt); 
out = Hex.fromArray(pt); 
// parse out's information 

これは少しやり過ぎに見えるかもしれないが、実際に使用する方が簡単です独自の暗号化/復号化を行うよりも、テストされていて、何度も使用されています。

+0

これは良い解決策のように聞こえる。上記のchar shiftメソッドをいくつかの変更を加えて行っていますが、私がプロのプロジェクトでこれを行っていたのであれば、おそらくこのような解決策をとるでしょう。 –

+0

これもチェックしてください:http://stackoverflow.com/questions/3868375/flash-as3-string-encode-decode(Juan Pabloソリューション) – AsTheWormTurns

2

fileReference.save()で元のトピックのビットを取得している可能性がありますが、ここでこれを検索しています。実際にはそれは簡単ではありませんでした。

var file:FileReference=new FileReference(); 
file.save(byteArrayData,"name you want to suggest to the user"); 

注目すべきこと:マウスイベント(CLICK)のハンドラ内でのみ開始できます。 したがって、ユーザーは書き込みを要求する必要があります。 これを行うと、ローカルで動作しますが、一度オンラインにすると、それは実行されません。 安全性についてよく知られていない比較的新しいセキュリティ機能と思われます。 最近、問題を解決できない場合は、おそらくそうです。ここで

はあなたがbuttonpushとPNGを保存することができる場所、作業オンライン例です。 http://www.snoep.at/misc/youtube/cloud_generator/

これは、すべてのユーザーで仕事をするために(私が10.1とアップだと思う)のFlashPlayerのごく最近のバージョンを必要とし、そうでない場合は、アップデートを試すことがあります。