`

flash as3 GUID UUID 生成类

阅读更多
package {
	
	import flash.display.Sprite;
	import flash.system.Capabilities;
	
	public class GUID extends Sprite {
		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<x.length; i += 16) {
				var olda:Number = a, oldb:Number = b;
				var oldc:Number = c, oldd:Number = d, olde:Number = e;
				for (var j:Number = 0; j<80; j++) {
					if (j<16) w[j] = x[i+j];
					else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1);
					var t:Number = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), safe_add(safe_add(e, w[j]), sha1_kt(j)));
					e = d; d = c;
					c = rol(b, 30);
					b = a; a = t;
				}
				a = safe_add(a, olda);
				b = safe_add(b, oldb);
				c = safe_add(c, oldc);
				d = safe_add(d, oldd);
				e = safe_add(e, olde);
			}
			return new Array(a, b, c, d, e);
		}
	
		private static function sha1_ft(t:Number, b:Number, c:Number, d:Number):Number {
			if (t<20) return (b & c) | ((~b) & d);
			if (t<40) return b ^ c ^ d;
			if (t<60) return (b & c) | (b & d) | (c & d);
			return b ^ c ^ d;
		}
	
		private static function sha1_kt(t:Number):Number {
			return (t<20) ? 1518500249 : (t<40) ? 1859775393 : (t<60) ? -1894007588 : -899497514;
		}
	
		private static function safe_add(x:Number, y:Number):Number {
			var lsw:Number = (x & 0xFFFF)+(y & 0xFFFF);
			var msw:Number = (x >> 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<str.length*8; i += 8) {
				bin[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<binarray.length*4; i++) {
				str += tab.charAt((binarray[i >> 2] >> ((3-i%4)*8+4)) & 0xF) + tab.charAt((binarray[i >> 2] >> ((3-i%4)*8)) & 0xF);
			}
			return str;
		}
	}
}

 

分享到:
评论

相关推荐

    uuid.rar_C获得UUID_UUID C_c生成uuid_c语言生成uuid_uuid

    标题“uuid.rar_C获得UUID_UUID C_c生成uuid_c语言生成uuid_uuid”表明这是一个关于使用C语言实现UUID生成的资源包。这个压缩包可能包含了一个C语言编写的程序或库,可以用来在Windows平台上(通过VC6编译器)生成...

    GUID/UUID生成器

    一个很好用的GUID生成器,可以批量保存为TXT文件。

    GUID-UUID生成器源码(C#)

    GUID-UUID生成器源码(C#) 有不足之处,敬请指教。

    uuid生成16位的,唯一码

    uuid生成,可生成16个字符的唯一码。使用方法,见main函数

    Guid号生成器,可以生成32位Guid号

    例如,在创建新的数据库记录时,可以直接复制生成的Guid作为新记录的主键,或者在编程时,可以将生成的Guid作为类或对象的实例标识。 使用Guid号生成器的步骤通常如下: 1. 运行guidgen.exe程序。 2. 程序将自动...

    一段用VB生成GUID的代码

    ### VB生成GUID的相关知识点 #### 一、GUID简介 GUID(Globally Unique Identifier),即全局唯一标识符,是一种在时间和空间上具有唯一性的标识符。GUID常用于跨平台、跨语言的应用程序中,用来确保生成的数据...

    VB.NET Guid生成器

    本项目提供的“VB.NET Guid生成器”就是这样一个工具,它允许用户批量生成Guid值,尽管在设计时可能并未考虑处理非常大的批量数据,因此在输入数字过大时可能会导致程序运行缓慢或卡死。 Guid的生成原理基于算法,...

    mysql_guid主键生成方式范例

    在这个例子中,`@GeneratedValue(strategy = GenerationType.UUID)`告诉Hibernate使用UUID生成策略来自动填充`id`字段。这个字段的类型是`String`,因为它会存储32位的GUID字符串。 在Eclipse环境下,你需要设置好...

    Guid生成器(随机生成工具)

    3. 第三部分(16位)是进程ID,代表生成Guid的进程在系统中的唯一标识。 4. 第四部分(12位)是随机或伪随机数,增加唯一性的概率。 5. 最后一部分(12位)也是随机数,进一步增加唯一性。 在编程中,Guid通常用于...

    GUID.zip_guid_guid 生成器

    标题中的“GUID.zip_guid_guid 生成器”是一个用于创建全局唯一标识符(GUID)的工具,它模拟了Visual Studio(VS)内置的GUID生成功能。GUID,全称Globally Unique Identifier,是一种在大量分布式系统中确保每个...

    易语言GUID批量生成器.rar

    易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar

    vc MFC获得uuid或GUID

    CString CTestGetUUIDDlg::newGUID() { CString buf; GUID guid; if (S_OK == ::... , guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5] , guid.Data4[6], guid.Data4[7]); } return buf; }

    GUID生成器 GUID生成小程序

    GUID生成器 GUID生成小程序 快速生成GUID,自动复制到剪贴板。

    GUID代码生成与算法介绍

    GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。生成算法用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。

    Guid随机生成器(工具)-下载

    Guid随机生成器是一款实用的小工具,它的主要功能是生成全局唯一的Guid并将其复制到剪贴板,方便用户在编写代码或者配置文件时快速粘贴使用。这种工具简化了开发人员手动创建Guid的过程,提高了工作效率。 Guid的...

    详解php中生成标准uuid(guid)的方法

    PHP中生成标准UUID(GUID)的方法是通过编写特定的函数来创建全局唯一标识符(UUID),这种标识符在计算机系统中用于唯一标识信息。在介绍这个方法之前,首先需要理解UUID和GUID的概念以及它们的应用场景。 UUID...

    Guid自动生成工具

    好用的Miceosoft官方Guid自动生成工具

    Guid生成器,可以生成多个

    Guid生成器是使用C#代码编写的,所以要想使用必须先安装dot.net环境。

    guid生成工具

    在.NET框架中,`Guid`类提供了一种简单的方式来生成和操作这些标识符。.NET 2.0是Microsoft开发的.NET Framework的一个版本,它包含了对C#、VB.NET等编程语言的支持,以及对CLR(Common Language Runtime)的重大...

    Unity安卓生成设备唯一UUID

    Unity生成设备唯一UUID,代码+样例

Global site tag (gtag.js) - Google Analytics