diff -r c9c34daf1fe6 -r 3eac3e741aa6 script/record_mic/GUID.as --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/script/record_mic/GUID.as Tue Jun 12 12:26:26 2012 +0200 @@ -0,0 +1,109 @@ +package { + + import flash.display.Sprite; + import flash.system.Capabilities; + + public class GUID extends Object { + + private static var counter:Number = 0; + + function GUID(){ + + } + + public static function create():String { + var dt:Date = new Date(); + var id1:Number = dt.getTime(); + var id2:Number = Math.random()*Number.MAX_VALUE; + var id3:String = Capabilities.serverString; + var rawID:String = calculate(id1+id3+id2+counter++).toUpperCase(); + var finalString:String = rawID.substring(0, 8) + "-" + rawID.substring(8, 12) + "-" + rawID.substring(12, 16) + "-" + rawID.substring(16, 20) + "-" + rawID.substring(20, 32); + return finalString; + } + + private static function calculate(src:String):String { + return hex_sha1(src); + } + + 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; + } + } +} + + + +// USAGE ///////////////////////////////////////// +/* +var myGUID:String = GUID.create(); +trace("myGUID: "+myGUID); +*/ + +// OUTPUT +// myGUID: 6EF3BDEC-5B51-3CE9-429C-F99A46EC0980 +////////////////////////////////////////////////// \ No newline at end of file