flash as3 строка кодировать декодировать - PullRequest
0 голосов
/ 06 октября 2010

Я хочу кодировать / декодировать строку в AS3:

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

encode(string) даст, например: yuioUasUenUwdfr.decode(encoded(string)) даст: This is an text.Он не должен быть безопасным или что-то в этом роде.

Ответы [ 4 ]

1 голос
/ 06 октября 2010

Другой вариант - использование XOR-шифра с ключом. Этот метод, конечно, полностью разрушаем, но он требует немного больше работы, поэтому для маскировки текста все должно быть в порядке.

Вот простая реализация. (Используется кодер Base64 урагана ; это просто для того, чтобы сделать его бинарно-безопасным, а не добавлять больше мрака)

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);
1 голос
/ 08 октября 2010

Спасибо, ребята! Получил и запустил с com.hurlant.util.Base64.

1 голос
/ 06 октября 2010

Я бы предложил либо кодировку base64 , либо rot13 . Есть много реализаций AS3 для каждого. Google предоставит.

0 голосов
/ 08 октября 2010

если вы создаете приложение AIR, вы можете зашифровать свои данные с помощью класса EncryptedLocalStore .

...