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进行比较.

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...