UUID生成器单文件版

查看 140|回复 10
作者:al6868   


微信截图_20240617235640.png (23.32 KB, 下载次数: 0)
下载附件
2024-6-18 00:01 上传

UUID 是 通用唯一识别码(Universally Unique Identifier)的缩写,是一种软件建构的标准,亦为开放软件基金会组织在分布式计算环境领域的一部分。UUID是一个128比特的数值,这个数值可以通过一定的算法计算出来。为了提高效率,常用的UUID可缩短至16位。UUID用来识别属性类型,在所有空间和时间上被视为唯一的标识。一般来说,可以保证这个值是真正唯一的任何地方产生的任意一个UUID都不会有相同的值。使用UUID的一个好处是可以为新的服务创建新的标识符。标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxxxx-xxxxxxxxxx(8-4-4-4-12)。
最近自己刚好需要一键生成UUDI功能,所以就自己弄了一个软件附带了网页版。有用也没用,看个人使用吧。
优点:不像网页版一样需要网络才能够使用
缺点:不如网页版一样便携可以随时在有网络的环境中打开使用
下载地址:https://wwz.lanzout.com/iFSrP223u4he

宋体, 微软

紫蝶冰澜   

UUID标准有很多,你这个是哪一个标准?
- v1 - 使用当前时间和本地机器上的网络接口的MAC地址(或节点)生成。
- ~~v2~~ - 在v1的基础上,将时间字段低位替换为本地账户的ID,使得在时间地点创作者三个参数上尽可能让其唯一。
- v3 - 基于命名空间的MD5哈希生成。
- v4 - 使用随机数据生成。
- v5 - 基于命名空间的SHA1哈希生成。(注意:这通常是版本3的替代方案,SHA1比MD5更安全)
- v6 - 在v1的基础上,通过时间实现单调递增的生成(注意:这通常是版本1的替代方案,解决了v1的值分散和无法顺序插入的缺点)。
- v7 - 使用Unix Epoch毫秒时间戳并结合版本4的填充随机数据的方式生成(注意:这通常是版本6的替代版本,并且兼容ULID)。
- v8 - 使用用户定义的数据生成(version=48-51bit,variant=64-65bit,`UUID: ffeeddcc-bbaa-8988-b766-554433221100`)。
[C] 纯文本查看 复制代码use ulid::Ulid;
use base32::Alphabet;
use uuid::{NoContext, Timestamp, Uuid};
fn main() {
    let v7 = Uuid::new_v7(Timestamp::now(NoContext));
    // 第一步:获取UUIDv7的二进制表示
    let bytes = v7.as_bytes();
    // 第二步:创建一个长度为20字节的字节数组v,并全部初始化为0
    let mut v = Vec::from([0u8; 20]);
    // 第三步:将UUIDv7的16字节二进制数据填充到v的末尾(从第5个字节开始,因为ULID通常包含一个4字节的时间戳前缀)
    v[4..].clone_from_slice(bytes);
    // 第四步:将填充后的20字节数据v转换为Crockford版本的base32编码(不含 ILOU 四个字符)
    let base32 = base32::encode(Alphabet::Crockford, v.as_slice());
    // 第五步:由于ULID通常包含一个时间戳前缀的编码,我们截取base32编码字符串的剩余部分(跳过前6个字符)
    let ulid = &base32[6..];
    println!("{}", ulid);
    let u = v7.as_u128();
    let ulid = Ulid::from(u);
    println!("{}", ulid.to_string());
}
masterbugs   

感谢楼主辛苦分享好资源
雷神119   

先进来看看
wfn84   

感谢分享
pj666a   

谢谢分享,辛苦了
CQGaxm   

感谢楼主辛苦分享
龍謹   

不明觉厉,先备着吧。
hello555   

先下载备用,感谢分享
Tath   

试试。谢谢。支持
您需要登录后才可以回帖 登录 | 立即注册

返回顶部