gpt4 book ai didi

unit-testing - UUID 版本 5(将哈希转换为 guid)生成算法的测试向量?

转载 作者:行者123 更新时间:2023-11-28 19:53:50 25 4
gpt4 key购买 nike

我正试图找到一些测试向量来检查我对 RFC 4122 of UUID version 5 的实现.

4.3 Algorithm for Creating a Name-Based UUID

UUID 的版本 3 用于将 MD5 哈希值放入 GUID。

UUID 的版本 5 用于将 SHA1 哈希值放入 GUID。

RFC 在 C 中有示例实现:

void uuid_create_sha1_from_name(
uuid_t *uuid, /* resulting UUID */
uuid_t nsid, /* UUID of the namespace */
void *name, /* the name from which to generate a UUID */
int namelen /* the length of the name */
);

我已经用我正在使用的语言编写了自己的实现。考虑到端序与网络顺序引起的大量麻烦,我确定我的实现是错误的。

我想要一些示例数据,例如:

uuid = NameToGUID(
{6ba7b811-9dad-11d1-80b4-00c04fd430c8}, //Namespace_URL
"https://stackoverflow.com/questions/5515880"); //a url
CheckEquals(
{8ABAD867-F515-3CF6-BB62-5F0C88B3BB11}, //expected uuid
uuid);

另见

最佳答案

german Wikipedia entry for UUIDs得到了 www.example.org 的例子:

6ba7b810-9dad-11d1-80b4-00c04fd430c8 // namespace UUID
www.example.org // url
74738ff5-5367-5958-9aee-98fffdcd1876 // expected UUID

除此之外,Java 提供了一个 UUID class你可以用来生成测试数据 。 (编辑:这似乎只能生成版本 1、2、3 和 4 UUID。)

an answer在您链接的问题中提到了一些可以生成版本 3/5 UUID 的库:

There seem to be a few libraries out there for generating version 3/5 UUIDs, including the python uuid module, boost.uuid (C++) and OSSP UUID. (I haven't looked for any .net ones)


OP 编辑​​

DE wikipedia上的例子有一点点错误:

  • 它声称使用 DNS 名称 www.example.org
  • 给定的 ASCII 字节序列用于 www.example.com
  • 但 SHA1 哈希使用的是 www.example.org

i would edit the page to change the byte sequence from
0x63 0x6f 0x6d "com"
to
0x6f 0x72 0x67 "org"

but i don't speak german, don't want to create an account, and am just all around too lazy

这个例子归结为

Namespace_DNS: {6ba7b810-9dad-11d1-80b4-00c04fd430c8}
Name: "www.example.org"

连接字节序列:

Bytes:         6b a7 b8 10 9d ad 11 d1 80 b4 00 c0 4f d4 30 c8   {6ba7b810-9dad-11d1-80b4-00c04fd430c8}
77 77 77 2e 65 78 61 6d 70 6c 65 2e 6f 72 67 "www.example.org"

使用 SHA1 对字节序列进行哈希处理,并将其中的大部分直接复制到 UUID 中:

SHA1 Digest:   74738ff5 5367 e958 9aee98fffdcd187694028007
UUID (v5): 74738ff5-5367-5958-9aee-98fffdcd1876
^ ^

并注意其中一个半字节转换为 5(表示版本 5)。
另一个字节的高 2 位设置为二进制 10xxxxxx

关于unit-testing - UUID 版本 5(将哈希转换为 guid)生成算法的测试向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5515880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com