Isso, foi daí que eu peguei... a que eu postei já tem as modificacoes p/ parar de chiar ;-)
On 3 mar, 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; > > ... > > mais » --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
