微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – JDK使用什么命名空间来生成名为UUIDFromBytes的UUID?

Sun / Oracle JDK公开了一个函数,用于在 java.util包中创建一个类型3(基于名称)的UUID:java.util.UUID.nameUUIDFromBytes(byte [] name).

我需要能够使用nameUUIDFromBytes在Java生成一个类型3的UUID,并且在使用另一种语言创建一个类型3的UUID时,可以得到相同的UUID,假设我提供与源相同的字节.

根据javadocs,此函数创建符合RFC 4122的类型3 UUID.但是,根据RFC 4122规范,必须在一些命名空间内创建一个类型3的UUID.大多数其他语言允许您在创建类型3 UUID(例如,Ruby中的UUIDTools gem)时指定命名空间.

所以我的问题是:当我调用nameUUIDFromBytes时,JDK使用什么命名空间UUID?

解决方法

this bug report

特别是评论,靠近底部

Perhaps the course of action at this point would be to fix the javadoc stating
“nameUUIDFromBytes(byte[] namespaceAndName) “one should pass-in a byte array containing the concatenation of the namespace UUID’s bytes and the name bytes (in that order)” That’s assuming the method just MD5’s the byte[] and sets the fields as per the IETF document.

我不知道我是否相信这是正常工作,但是使用UUID规范中预定义的名称测试应该很容易,与其他实现生成的相同的UUID进行比较.

原文地址:https://www.jb51.cc/java/122943.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐