/** * Calculates the SHA1 checksum. * @authors Mika Palmu * @version 2.0 * * Original Javascript implementation: * Secure Hash Algorithm, SHA-1, as defined in FIPS PUB 180-1 * Version 2.1 Copyright Paul Johnston 2000 - 2002 * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet * See http://pajhome.org.uk/crypt/md5 for more info. */ class com.meychi.ascrypt.SHA1 { /** * Calculates the SHA1 checksum. */ public static function calculate(src:String):String { return hex_sha1(src); } /** * Private methods. */ private static function hex_sha1(src:String):String { return binb2hex(core_sha1(str2binb(src), src.length*8)); } private static function core_sha1(x:Array, len:Number):Array { x[len >> 5] |= 0x80 << (24-len%32); x[((len+64 >> 9) << 4)+15] = len; var w:Array = new Array(80), a:Number = 1732584193; var b:Number = -271733879, c:Number = -1732584194; var d:Number = 271733878, e:Number = -1009589776; for (var i:Number = 0; i> 16)+(y >> 16)+(lsw >> 16); return (msw << 16) | (lsw & 0xFFFF); } private static function rol(num:Number, cnt:Number):Number { return (num << cnt) | (num >>> (32-cnt)); } private static function str2binb(str:String):Array { var bin:Array = new Array(); var mask:Number = (1 << 8)-1; for (var i:Number = 0; i> 5] |= (str.charCodeAt(i/8) & mask) << (24-i%32); } return bin; } private static function binb2hex(binarray:Array):String { var str:String = new String(""); var tab:String = new String("0123456789abcdef"); for (var i:Number = 0; i> 2] >> ((3-i%4)*8+4)) & 0xF) + tab.charAt((binarray[i >> 2] >> ((3-i%4)*8)) & 0xF); } return str; } }