gofrs/uuid

GitHub: gofrs/uuid

一个纯 Go 实现的 UUID 库,支持 RFC-9562 标准下多种版本 UUID 的生成与解析。

Stars: 1814 | Forks: 124

# UUID [![许可证](https://img.shields.io/github/license/gofrs/uuid.svg)](https://github.com/gofrs/uuid/blob/master/LICENSE) [![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/cas/31/31c96a8fe552af584b5983afc39ddf2e71ca6806185aad0eda564c77331e5b3e.svg)](https://github.com/gofrs/uuid/actions/workflows/go.yml) [![Go 参考](https://pkg.go.dev/badge/github.com/gofrs/uuid/v5.svg)](https://pkg.go.dev/github.com/gofrs/uuid/v5) [![覆盖率状态](https://codecov.io/gh/gofrs/uuid/branch/master/graphs/badge.svg?branch=master)](https://codecov.io/gh/gofrs/uuid/) [![Go 报告卡](https://goreportcard.com/badge/github.com/gofrs/uuid)](https://goreportcard.com/report/github.com/gofrs/uuid) [![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/cas/53/539e9a6bf48ad24469a4363bff3aa68124154549e26592783d3d8577f2acbbfc.svg)](https://github.com/gofrs/uuid/actions/workflows/codeql.yml) [![OpenSSF 最佳实践](https://www.bestpractices.dev/projects/8929/badge)](https://www.bestpractices.dev/projects/8929) [![OpenSSF 记分卡](https://api.scorecard.dev/projects/github.com/gofrs/uuid/badge)](https://scorecard.dev/viewer/?uri=github.com/gofrs/uuid) Package uuid 提供了 Universally Unique Identifiers (UUID) 变体的纯 Go 实现,其定义见 RFC-9562。此 package 支持以不同格式创建 和解析 UUID。 此 package 支持以下 UUID 版本: * 版本 1,基于时间戳和 MAC 地址 * 版本 3,基于命名值的 MD5 哈希 * 版本 4,基于随机数 * 版本 5,基于命名值的 SHA-1 哈希 * 版本 6,基于时间戳的 k-sortable id,且字段与 v1 兼容 * 版本 7,基于时间戳的 k-sortable id * 版本 8,用于自定义 UUID 实现 ## 项目历史 本项目最初 fork 自 [github.com/satori/go.uuid](https://github.com/satori/go.uuid) 仓库,因为 它似乎不再维护,并且存在[严重 缺陷](https://github.com/satori/go.uuid/issues/73)。我们决定接管 这个项目,以确保它得到定期维护,从而造福更广泛的 Go 社区。 我们要感谢 Maxim Bublis 在该 package 原始迭代中付出的辛勤 工作。 ## 许可证 此 package 的源代码基于 MIT 许可证发布。请查看 [LICENSE](https://github.com/gofrs/uuid/blob/master/LICENSE) 以获取许可证的完整 内容。 ## 推荐的 Package 版本 我们建议使用此 package 的 v2.0.0+ 版本,因为 2.0.0 之前的版本 是在我们 fork 原 package 之前创建的,存在一些已知的 缺陷。 ## 要求 此 package 需要 Go 1.25 或更高版本 ## 用法 以下是如何使用此 package 的快速概述。有关更详细的 文档,请参阅 [GoDoc 页面](http://godoc.org/github.com/gofrs/uuid)。 ``` package main import ( "log" "github.com/gofrs/uuid/v5" ) // Create a Version 4 UUID, panicking on error. // Use this form to initialize package-level variables. var u1 = uuid.Must(uuid.NewV4()) func main() { // Create a Version 4 UUID. u2, err := uuid.NewV4() if err != nil { log.Fatalf("failed to generate UUID: %v", err) } log.Printf("generated Version 4 UUID %v", u2) // Parse a UUID from a string. s := "6ba7b810-9dad-11d1-80b4-00c04fd430c8" u3, err := uuid.FromString(s) if err != nil { log.Fatalf("failed to parse UUID %q: %v", s, err) } log.Printf("successfully parsed UUID %v", u3) } ``` ## 参考 - [RFC-9562](https://tools.ietf.org/html/rfc9562)(替代了 RFC-4122) - [DCE 1.1:身份验证与安全服务](http://pubs.opengroup.org/onlinepubs/9696989899/chap5.htm#tagcjh_08_02_01_01)
标签:EVTX分析, 日志审计