[ActionScript 3.0] AS3 GUID(全局唯一标识符)
package com.controls {
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;
}
}
}
用法:GUID.create();
可以创建全局唯一标识符。
[ActionScript 3.0] AS3 GUID(全局唯一标识符)的更多相关文章
- GUID全局唯一标识符
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中. ...
- GUID全局唯一标识符相关知识了解
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情 ...
- 全局唯一标识符(GUID)
全局唯一标识符,简称GUID(发音为/ˈɡuːɪd/或/ˈɡwɪd/),是一种由算法生成的唯一标识,通常表示成32个16进制数字(0-9,A-F)组成的字符串,如:{21EC2020-3AEA-106 ...
- GUID (全局唯一标识符)
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中. ...
- Identifier:GUID (全局唯一标识符)
ylbtech-Miscellaneos-Identifier:GUID (全局唯一标识符) A,返回顶部 1, 全局唯一标识符(GUID,Globally Unique Identifier)是一种 ...
- 全局唯一标识符(GUID,Globally Unique Identifier)
全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符.GUID主要用于在拥有多个节点.多台计算机的网络或系统中.在理想情况 ...
- GUID(Globally Unique Identifier)全局唯一标识符
最近有大量数据存入数据库时,因为主键为一个nvarchar类型,起初想着用int 类型,每次打开表的时候,获取最后一行的ID,然后让其++. 但发现由于字段是char类型,数据库对其进行了排序.再次插 ...
- JS生成全局唯一标识符(GUID,UUID)的方法
全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) . GUID是一种由算法生成的二进制长度 ...
- C# 全局唯一标识符 (GUID)
一 C# 全局唯一标识符 (GUID) Represents a globally unique identifier (GUID). To browse the .NET Framework so ...
随机推荐
- oracle监控脚本
简单命令 1.显示服务器上的可用实例:ps -ef | grep smon2.显示服务器上的可用监听器:ps -ef | grep -i listener | grep -v grep3.查看Orac ...
- 转载:scikit-learn学习之SVM算法
转载,http://blog.csdn.net/gamer_gyt 目录(?)[+] ========================================================= ...
- Spring boot配合Spring session(redis)遇到的错误
背景:本MUEAS项目,一开始的时候,是没有引入redis的,考虑到后期性能的问题而引入.之前没有引用redis的时候,用户登录是正常的.但是,在加入redis支持后,登录就出错!错误如下: . __ ...
- java mail使用中遇到的550类型错误
前言 首先,需要说明的是,本错误来自于一个简单的基于java mail的api程序,邮件服务器是163的SMTP,即smtp.163.com. 程序 需要说明一下,下面这个程序,是来自于网络上,本人为 ...
- SPOJ #752. Power it!
By property of mod operations , we can simply use Divide and Conquer + Recursion to solve it. Refere ...
- 【转】8张图理解Java
一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符串不变性 下面这张图展示了这段代码做 ...
- IntelliJ IDEA中运行Tomcat报内存溢出(java.lang.OutOfMemoryError: PermGen space)
在Run/Debug Configuration中修改Tomcat的VM options,在里面输入以下内容: -server -XX:PermSize=128M -XX:MaxPermSize=25 ...
- IntelliJ IDEA通过Spring配置连接MySQL数据库
先从菜单View→Tool Windows→Database打开数据库工具窗口,如下图所示: 点击Database工具窗口左上角添加按钮"+",选择Import from sour ...
- java-多态性
1 多态性 主要表现在上转型对象 2 强制类型转换 2.1 基本类型的强制类型转换 转换只能在数值间进行.包括整数型.字符型.浮点型.数值类型和布尔类型间不能转换. 2.2 引用类型变量转换成其子类型 ...
- css 默认
先写全局的样式 body { margin:0 auto; font-size:12px; font-family:Verdana; line-height:1.5;} ul,dl,dd,h1,h2, ...