2010-10-05 90 views
0

我想編碼/ AS3中解碼的字符串:閃光AS3串編解碼

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

encode(string)會給例如:yuioUasUenUwdfr
decode(encoded(string))將給:This is an text
它不必是安全的或任何東西。

回答

1

我會建議base64rot13編碼。每種AS3都有很多實現。谷歌將提供。

+0

ROT13看起來不錯。任何想法都可以與特殊字符(*&^%$#)一起使用? – Allard 2010-10-05 23:13:32

+0

這是他指的lib:http://github.com/mikechambers/as3corelib – UltimateBrent 2010-10-06 00:36:06

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); 
1

謝謝,夥計們!得到它並與com.hurlant.util.Base64一起運行。