在一个国外论坛上看到的flash as3 生成GUID(UUID)的方法。我已经在使用了,贴出来大家一起用。很不错的!这个编辑器代码中没有找到as代码,我就随便选的c#代码,大家知道就行了。呵呵
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;
}
}
}
分享到:
相关推荐
GUID-UUID生成器源码(C#) 有不足之处,敬请指教。
一个很好用的GUID生成器,可以批量保存为TXT文件。
一段用VB生成GUID的代码,主要有以下几个函数: Public Function GetGUID() As String Public Function SplitGUID(ByVal GUID As String) As String Public Function OutPutGUID() As String Private Declare ...
易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar 易语言GUID批量生成器.rar
GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。生成算法用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
GUID生成器 GUID生成小程序 快速生成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; }
好用的Miceosoft官方Guid自动生成工具
Guid生成器是使用C#代码编写的,所以要想使用必须先安装dot.net环境。
易语言GUID批量生成器源码,GUID批量生成器,生成新的GUID,验证,生成GUID并加入列表,后续处理,CoCreateGuid
VB.NET Guid生成器,支持批量生成,但输入数字不宜过大,否则会卡死,仍然有很多不足需要发现和改进,望轻拍
Guid号生成器,可以生成32位随机的字符串,用于做id等唯一性标示。
采用纯C的方式生成全球唯一ID,guid,采用linux下的代码移植过来的,软件采用vc6编译
GUID生成工具源码 guid生成工具,有源码的。 .NET C# GUID自动生成
免费的GUID批量生成工具,可以指定GUID生成数量,生成格式为字符串格式,一键复制到剪贴板.非常方便.
guid生成辅助类help类
可自定义guid的个数,可累积. 用于生成guid的小工具。 欢迎下载
Guid随机生成器(工具),随机生成GUID并复制到剪切板。
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复
GUID批量生成器.rar