Alguém aqui já conseguiu criptografar alguma String com a bilioteca as3crypto, passar para o PHP, e depois descriptografar?
Tentei isso à algum tempo atrás e não consegui, pesquisei no google, mas também não deu certo... Sempre a string criptofgrafada que eu recebia no PHP não era transformada corretamente para a original Obrigado, Lucas Araujo, http://twitter.com/LucasAraujo On Tue, Mar 3, 2009 at 12:14, Julio Carneiro <[email protected]> wrote: > > Eu tb uso esta classe, que pode ser encontrada aqui: > http://gsolofp.blogspot.com/2006/01/actionscript-3-md5-and-sha1.html > > Uso sem problemas, depois de uns pequenos ajustes para eliminar > warnings. > > Lá tem tb uma classe pra SHA1, se alguém precisar. > > julio > > > On Mar 3, 11:44 am, Ricardo Ramires <[email protected]> wrote: >> Estou usando essa que alguém(não lembro de onde peguei) converteu do >> javascript para as3, lembro que tinha uns warnings, pq quem tinha >> feito não tava usando o modo estrito, mas agora ta certinha: >> >> Usa chamando o metodo estático MD5.encrypt("suastring"); >> >> package helpers { >> public class MD5 { >> >> /* >> * Configurable variables. You may need to tweak these to be >> compatible with >> * the server-side, but the defaults work in most cases. >> */ >> >> public static const HEX_FORMAT_LOWERCASE:uint = 0; >> public static const HEX_FORMAT_UPPERCASE:uint = 1; >> >> public static const >> BASE64_PAD_CHARACTER_DEFAULT_COMPLIANCE:String = >> ""; >> public static const >> BASE64_PAD_CHARACTER_RFC_COMPLIANCE:String = >> "="; >> >> public static var hexcase:uint = 0; /* hex output format. >> 0 - >> lowercase; 1 - uppercase */ >> public static var b64pad:String = ""; /* base-64 pad >> character. "=" >> for strict RFC compliance */ >> >> public static function encrypt (string:String):String { >> return hex_md5 (string); >> } >> >> /* >> * These are the functions you'll usually want to call >> * They take string arguments and return either hex or >> base-64 >> encoded strings >> */ >> public static function hex_md5 (string:String):String { >> return rstr2hex (rstr_md5 (str2rstr_utf8 (string))); >> } >> >> public static function b64_md5 (string:String):String { >> return rstr2b64 (rstr_md5 (str2rstr_utf8 (string))); >> } >> >> public static function any_md5 (string:String, >> encoding:String):String { >> return rstr2any (rstr_md5 (str2rstr_utf8 (string)), >> encoding); >> } >> public static function hex_hmac_md5 (key:String, >> data:String):String >> { >> return rstr2hex (rstr_hmac_md5 (str2rstr_utf8 (key), >> str2rstr_utf8 >> (data))); >> } >> public static function b64_hmac_md5 (key:String, >> data:String):String >> { >> return rstr2b64 (rstr_hmac_md5 (str2rstr_utf8 (key), >> str2rstr_utf8 >> (data))); >> } >> public static function any_hmac_md5 (key:String, data:String, >> encoding:String):String { >> return rstr2any(rstr_hmac_md5(str2rstr_utf8(key), >> str2rstr_utf8 >> (data)), encoding); >> } >> >> /* >> * Perform a simple self-test to see if the VM is working >> */ >> public static function md5_vm_test ():Boolean { >> return hex_md5 ("abc") == >> "900150983cd24fb0d6963f7d28e17f72"; >> } >> >> /* >> * Calculate the MD5 of a raw string >> */ >> public static function rstr_md5 (string:String):String { >> return binl2rstr (binl_md5 (rstr2binl (string), >> string.length * >> 8)); >> } >> >> /* >> * Calculate the HMAC-MD5, of a key and some data (raw >> strings) >> */ >> public static function rstr_hmac_md5 (key:String, >> data:String):String { >> var bkey:Array = rstr2binl (key); >> if (bkey.length > 16) bkey = binl_md5 (bkey, key.length * >> 8); >> >> var ipad:Array = new Array(16), opad:Array = new Array(16); >> for(var i:Number = 0; i < 16; i++) { >> ipad[i] = bkey[i] ^ 0x36363636; >> opad[i] = bkey[i] ^ 0x5C5C5C5C; >> } >> >> var hash:Array = binl_md5 (ipad.concat (rstr2binl (data)), >> 512 + >> data.length * 8); >> return binl2rstr (binl_md5 (opad.concat (hash), 512 + >> 128)); >> } >> >> /* >> * Convert a raw string to a hex string >> */ >> public static function rstr2hex (input:String):String { >> var hex_tab:String = hexcase ? "0123456789ABCDEF" : >> "0123456789abcdef"; >> var output:String = ""; >> var x:Number; >> for(var i:Number = 0; i < input.length; i++) { >> x = input.charCodeAt(i); >> output += hex_tab.charAt((x >>> 4) & 0x0F) >> + hex_tab.charAt( x & 0x0F); >> } >> return output; >> } >> >> /* >> * Convert a raw string to a base-64 string >> */ >> public static function rstr2b64 (input:String):String { >> var tab:String = >> "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; >> var output:String = ""; >> var len:Number = input.length; >> for(var i:Number = 0; i < len; i += 3) { >> var triplet:Number = (input.charCodeAt(i) << 16) >> | (i + 1 < len ? input.charCodeAt(i+1) << 8 >> : 0) >> | (i + 2 < len ? input.charCodeAt(i+2) >> : 0); >> for(var j:Number = 0; j < 4; j++) { >> if(i * 8 + j * 6 > input.length * 8) output += b64pad; >> else output += tab.charAt((triplet >>> 6*(3-j)) & >> 0x3F); >> } >> } >> return output; >> } >> >> /* >> * Convert a raw string to an arbitrary string encoding >> */ >> public static function rstr2any(input:String, >> encoding:String):String { >> var divisor:Number = encoding.length; >> var remainders:Array = []; >> var i:Number, q:Number, x:Number, quotient:Array; >> >> /* Convert to an array of 16-bit big-endian values, >> forming the >> dividend */ >> var dividend:Array = new Array(input.length / 2); >> for(i = 0; i < dividend.length; i++) { >> dividend[i] = (input.charCodeAt(i * 2) << 8) | >> input.charCodeAt >> (i * 2 + 1); >> } >> >> /* >> * Repeatedly perform a long division. The binary array >> forms the >> dividend, >> * the length of the encoding is the divisor. Once >> computed, the >> quotient >> * forms the dividend for the next step. We stop when the >> dividend >> is zero. >> * All remainders are stored for later use. >> */ >> while(dividend.length > 0) { >> quotient = []; >> x = 0; >> for(i = 0; i < dividend.length; i++) { >> x = (x << 16) + dividend[i]; >> q = Math.floor(x / divisor); >> x -= q * divisor; >> if(quotient.length > 0 || q > 0) >> quotient[quotient.length] = q; >> } >> remainders[remainders.length] = x; >> dividend = quotient; >> } >> >> /* Convert the remainders to the output string */ >> var output:String = ""; >> for(i = remainders.length - 1; i >= 0; i--) >> output += encoding.charAt (remainders[i]); >> >> return output; >> } >> >> /* >> * Encode a string as utf-8. >> * For efficiency, this assumes the input is valid utf-16. >> */ >> public static function str2rstr_utf8 (input:String):String { >> var output:String = ""; >> var i:Number = -1; >> var x:Number, y:Number; >> >> while(++i < input.length) { >> /* Decode utf-16 surrogate pairs */ >> x = input.charCodeAt(i); >> y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0; >> if(0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= >> 0xDFFF) { >> x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF); >> i++; >> } >> >> /* Encode output as utf-8 */ >> if(x <= 0x7F) >> output += String.fromCharCode(x); >> else if(x <= 0x7FF) >> output += String.fromCharCode(0xC0 | ((x >>> 6 ) & >> 0x1F), >> 0x80 | ( x & >> 0x3F)); >> else if(x <= 0xFFFF) >> output += String.fromCharCode(0xE0 | ((x >>> 12) & >> 0x0F), >> 0x80 | ((x >>> 6 ) & >> 0x3F), >> 0x80 | ( x & >> 0x3F)); >> else if(x <= 0x1FFFFF) >> output += String.fromCharCode(0xF0 | ((x >>> 18) & >> 0x07), >> 0x80 | ((x >>> 12) & >> 0x3F), >> 0x80 | ((x >>> 6 ) & >> 0x3F), >> 0x80 | ( x & >> 0x3F)); >> } >> return output; >> } >> >> /* >> * Encode a string as utf-16 >> */ >> public static function str2rstr_utf16le >> (input:String):String { >> var output:String = ""; >> for(var i:Number = 0; i < input.length; i++) >> output += String.fromCharCode( input.charCodeAt(i) >> & >> 0xFF, >> (input.charCodeAt(i) >>> >> 8) & >> 0xFF); >> return output; >> } >> >> public static function str2rstr_utf16be >> (input:String):String { >> var output:String = ""; >> for(var i:Number = 0; i < input.length; i++) >> output += String.fromCharCode((input.charCodeAt(i) >>> >> 8) & >> 0xFF, >> input.charCodeAt(i) >> & >> 0xFF); >> return output; >> } >> >> /* >> * Convert a raw string to an array of little-endian words >> * Characters >255 have their high-byte silently ignored. >> */ >> public static function rstr2binl (input:String):Array { >> var output:Array = new Array(input.length >> 2); >> var i:Number; >> for(i = 0; i < output.length; i++) >> output[i] = 0; >> for(i = 0; i < input.length * 8; i += 8) >> output[i>>5] |= (input.charCodeAt(i / 8) & 0xFF) << >> (i%32); >> return output; >> } >> >> /* >> * Convert an array of little-endian words to a string >> */ >> public static function binl2rstr (input:Array):String { >> var output:String = ""; >> for(var i:Number = 0; i < input.length * 32; i += 8) >> output += String.fromCharCode((input[i>>5] >>> (i % 32)) >> & >> 0xFF); >> return output; >> } >> >> /* >> * Calculate the MD5 of an array of little-endian words, and >> a bit >> length. >> */ >> public static function binl_md5 (x:Array, len:Number):Array { >> /* append padding */ >> x[len >> 5] |= 0x80 << ((len) % 32); >> x[(((len + 64) >>> 9) << 4) + 14] = len; >> >> var a:Number = 1732584193; >> var b:Number = -271733879; >> var c:Number = -1732584194; >> var d:Number = 271733878; >> >> for(var i:Number = 0; i < x.length; i += 16) { >> var olda:Number = a; >> var oldb:Number = b; >> var oldc:Number = c; >> var oldd:Number = d; >> >> a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); >> d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); >> c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); >> b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); >> a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); >> d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); >> c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); >> b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); >> a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); >> d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); >> c = md5_ff(c, d, a, b, x[i+10], 17, -42063); >> b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); >> a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); >> d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); >> ... >> >> read more » > > > --~--~---------~--~----~------------~-------~--~----~ Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [email protected] Mais opções estão disponíveis em http://groups.google.com/group/flexdev -~----------~----~----~----~------~----~------~--~---
