AS3 - 简单的文本加扰编码/解码器?

时间:2011-11-12 08:24:20

标签: flash actionscript-3 encryption save

我正在研究AS3游戏的保存/加载功能。我打算让玩家从浏览器运行的游戏中将游戏保存到硬盘中。我想要加扰我正在保存的文本,这样如果人们以文本形式打开文件,人们就无法真正阅读它。

在保存之前对文本进行加密,然后在打开后进行解扰是什么好方法?

我知道在Java中可以使用char并添加或减去它来更改char,这是一种非常简单的方法。在ActionScript 3中可以做什么?

请记住,我正在寻找简单而容易而非安全的方法。我检查过解决方案的所有加密站点都比我现在所能理解的要复杂得多,并且专注于进行最安全的加密,而不是简单的集成。

6 个答案:

答案 0 :(得分:2)

可以做类似于你在java中做的事情。

尝试:

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

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

}

其中string是您要更改的文本,其作用是获取字符串每个索引处字符的数字unicode值,并按偏移量修改它的值。

要进行解码,请运行相同的代码但反过来:

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

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

}

答案 1 :(得分:2)

使用fileReference.save()可能会得到一些原始主题,但我在这里搜索了这个。实际上它不可能更简单:

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

要注意的一件事:您只能在mouseEvent(CLICK)的处理程序内启动。 因此用户必须请求写入。 如果您尝试自动执行此操作,它将在本地工作,但一旦您将其联机,它就不会! 似乎是一个相对较新的严重记录的安全功能。 因此,如果您最近无法使其工作,那可能就是这样。

这是一个有效的在线示例,您可以使用buttonpush保存PNG: http://www.snoep.at/misc/youtube/cloud_generator/

要实现这一点,所有用户都需要一个相当新版本的flashplayer(我认为10.1及更高版本),所以如果它不起作用,你可能会尝试更新。

答案 2 :(得分:1)

为什么不反转文字?这是一种简单而有效的方法。

另一种方法是将文本分成2个字符组,然后反转它们,然后再次加入字符串。

答案 3 :(得分:1)

rot13对此非常简单。我确定有一些AS3教程或libraries there。另一个常见选项是base64,也包含现有的libraries

答案 4 :(得分:1)

如果您真的想这样做,为什么不使用既定的加密密码?

从此处获取as3crypto http://code.google.com/p/as3crypto/downloads/detail?name=Crypto.zip&can=2&q=

接下来是如何使用RC4(您可以使用的众多密码之一):

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

这看起来有点矫枉过正,但它实际上比使用自己的加密/解密更容易,并且已经过多次测试和使用。

答案 5 :(得分:0)

我不知道你如何保存游戏,但如果使用Local Shared Objects,你的文本将保存为二进制数据(变量名仍然是人类可读的)。