所以我需要生成一个带字符串的UUID作为哈希函数的输入。
据我所知,MS的GUID实现不是endian可移植的,因此没有正确实现RFC 4122。所以我想知道我是否通过传递.NET System.Security.Cryptography.SHA1Managed()来实现基本相同的陷阱.ComputeHash(数据)函数是一个UTF-8字符串。
我相信我很好,因为维基百科似乎表明字节顺序对UTF-8无关紧要,而字节顺序标记基本上被降级为表示该字符串为UTF-8的标题。
编辑:注意我正在尝试使用UTF-8字符串作为UUID中使用的哈希的种子。
答案 0 :(得分:5)
字节数组没有字节序问题。无论机器架构如何,每个人都同意数组中的第一个元素具有最低地址。 Guid不是一个字节数组,它是一个结构,其字段不是字节。因此对字节顺序很敏感。
utf-8编码的字符串是byte []。 ComputeHash()需要一个byte []。因此,它们对字节序不敏感。
答案 1 :(得分:2)
UTF8没有多个字节顺序 相反,UTF8规范精确定义了用于编码非ASCII字符的字节顺序。
但是,您无法将任意哈希解析为UTF8。