Une autre option utilise un XOR cypher, avec une clé. Cette méthode est totalement cassable, bien sûr, mais cela prend un peu plus de travail, donc pour obscurcir votre texte, ça devrait aller.
Voici une mise en œuvre simple. (Il utilise hurlant's Base64 encoder, ce qui est juste pour le rendre binaire sûr, de ne pas ajouter plus l'obscurité)
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);
ROT13 a l'air bien. Toute idée cela fonctionnera avec des caractères spéciaux (* & ^% $ #) aussi? – Allard
Voici la bibliothèque dont il parle: http://github.com/mikechambers/as3corelib – UltimateBrent