flash as3字符串编码解码

时间:2010-10-05 22:56:42

标签: flash actionscript-3 string decode encode

我想在AS3中对字符串进行编码/解码:

var string:String = "This is an text";

encode(string)会举例:yuioUasUenUwdfr decode(encoded(string))会:This is an text 它不必是安全的或任何东西。

4 个答案:

答案 0 :(得分:1)

我建议使用base64rot13编码。每个都有许多AS3实现。谷歌将提供。

答案 1 :(得分:1)

另一种选择是使用带有密钥的XOR cypher。当然,这种方法完全可以破解,但它需要更多的工作,所以为了模糊你的文本应该没问题。

这是一个简单的实现。 (它使用hurlant's Base64 encoder;这只是为了使其二进制安全,而不是添加更多的默默无闻)

import com.hurlant.util.Base64;

function applyXor(inputBuffer:ByteArray,key:String):ByteArray {
    var outBuffer:ByteArray = new ByteArray();

    var keysBuffer:ByteArray = new ByteArray();
    keysBuffer.writeUTFBytes(key);

    var offset:int = 0;
    var inChar:int;
    var outChar:int;
    var bitMask:int;

    while(inputBuffer.bytesAvailable) {
        offset  = inputBuffer.position % keysBuffer.length;
        inChar  = inputBuffer.readUnsignedByte();

        bitMask = keysBuffer[offset];

        outChar = bitMask ^ inChar;     
        outBuffer.writeByte(outChar);

    }

    return outBuffer;
}

function encode(input:String,key:String):String {
    var inputBuffer:ByteArray = new ByteArray();
    inputBuffer.writeUTFBytes(input);
    inputBuffer.position = 0;
    var out:ByteArray = applyXor(inputBuffer,key);
    return Base64.encodeByteArray(out);
}

function decode(input:String,key:String):String {
    var inputBuffer:ByteArray = Base64.decodeToByteArray(input);
    var out:ByteArray = applyXor(inputBuffer,key);
    out.position = 0;
    return out.readUTFBytes(out.length);
}

var str:String = "This is some text. Let's add non-ascii chars like Ñ,à,ü, etc, just to test it.";
var key:String = "whatever &^%$#";
var encoded:String = encode(str,key);
var decoded:String = decode(encoded,key);

trace(encoded);
trace(decoded);
trace(decoded == str);

答案 2 :(得分:1)

谢谢,伙计们!了解并运行com.hurlant.util.Base64。

答案 3 :(得分:0)

如果您正在构建AIR应用程序,则可以使用EncryptedLocalStore类加密数据。