Heyho,
I´m doing some math on Hex Numbers to implement a modification of the TEA
algorithm,
which has to match a C implementation.
Now I´m facing the problem that Flash allows negative hexadecimal values,
which is quite unusual and not supported in C.
I´ve posted my algorithm below, would be great if someone would have a
solution for me on
how to force Flash to handle over/underflows in the "normal" manner.
Thanks,
André
--------------------------
usage example
//
var inp = "12345678901234567890123456789012";
var key = "72538349254738294658203654839288";
//
var crypted = TeaEncrypt(inp,key);
//
var out = TeaDecrypt(crypted,key);
//
trace(inp);
trace(crypted);
trace(out);
//traces:
/*
12345678901234567890123456789012
-4e99fb3a-1f1d5f5d
-703ea3b373dc1b
*/
public static function TeaEncrypt(cryptData:String,
cryptKey:String):String {
var y:Number= parseInt(cryptData.substr(0, 8), 16);
var z:Number= parseInt(cryptData.substr(8, 8), 16);
var a:Number= parseInt(cryptKey.substr( 0, 8), 16);
var b:Number= parseInt(cryptKey.substr( 8, 8), 16);
var c:Number= parseInt(cryptKey.substr(16, 8), 16);
var d:Number= parseInt(cryptKey.substr(24, 8), 16);
var sum:Number=0x00;
var dt:Number=0x9E3779B9;
var n:Number=32;
while( n-->0 ) {
sum = (sum + dt) & 0xFFFFFFFF;
y += ((z << 4)+a) ^ (z+sum) ^ ((z >>> 5)+b);
z += ((y << 4)+c) ^ (y+sum) ^ ((y >>> 5)+d);
}
return y.toString(16) + z.toString(16);
}
public static function TeaDecrypt(cryptData:String,
cryptKey:String):String {
var y:Number= parseInt(cryptData.substr(0, 8), 16);
var z:Number= parseInt(cryptData.substr(8, 8), 16);
var a:Number= parseInt(cryptKey.substr( 0, 8), 16);
var b:Number= parseInt(cryptKey.substr( 8, 8), 16);
var c:Number= parseInt(cryptKey.substr(16, 8), 16);
var d:Number= parseInt(cryptKey.substr(24, 8), 16);
var sum:Number=0xC6EF3720;
var delta:Number=0x9E3779B9;
var n:Number=32;
while( n-->0 ) {
z -= ((y << 4)+c) ^ (y+sum) ^ ((y >>> 5)+d);
y -= ((z << 4)+a) ^ (z+sum) ^ ((z >>> 5)+b);
sum = (sum - delta) & 0xFFFFFFFF;
}
return y.toString(16) + z.toString(16);
}
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com