gpt4 book ai didi

javascript - Java UUID.nameUUIDFromBytes 要用 JavaScript 编写?

转载 作者:行者123 更新时间:2023-11-30 11:27:23 25 4
gpt4 key购买 nike

我有一个我无法控制的第 3 方应用程序,它使用 Java 的 UUID.nameUUIDFromBytes 创建字符串。我需要重现这个用 JS 编写的函数。

OpenJDK's source我发现了这个:

public static UUID nameUUIDFromBytes(byte[] name) {
MessageDigest md;
try {
md = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException nsae) {
throw new InternalError("MD5 not supported", nsae);
}
byte[] md5Bytes = md.digest(name);
md5Bytes[6] &= 0x0f; /* clear version */
md5Bytes[6] |= 0x30; /* set to version 3 */
md5Bytes[8] &= 0x3f; /* clear variant */
md5Bytes[8] |= 0x80; /* set to IETF variant */
return new UUID(md5Bytes);
}

我这辈子都弄不明白,主要是因为 JS 如何抽象字节。

TL;DR:我只需要一个 js 函数,它将生成与 UUID.nameUUIDFromBytes((VARIABLE).getBytes(Charsets.UTF_8)).toString() 相同的字符串。

最佳答案

好吧,这不是纯 js,而是 nodejs。

const crypto = require('crypto');

function javaHash(input) {
let md5Bytes = crypto.createHash('md5').update(input).digest();
md5Bytes[6] &= 0x0f; /* clear version */
md5Bytes[6] |= 0x30; /* set to version 3 */
md5Bytes[8] &= 0x3f; /* clear variant */
md5Bytes[8] |= 0x80; /* set to IETF variant */
return md5Bytes.toString('hex');
}

关于javascript - Java UUID.nameUUIDFromBytes 要用 JavaScript 编写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47505620/

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