UTF-8对字节顺序敏感吗?

时间:2013-02-01 21:30:09

标签: c# .net utf-8 uuid endianness

所以我需要生成一个带字符串的UUID作为哈希函数的输入。

据我所知,MS的GUID实现不是endian可移植的,因此没有正确实现RFC 4122。所以我想知道我是否通过传递.NET System.Security.Cryptography.SHA1Managed()来实现基本相同的陷阱.ComputeHash(数据)函数是一个UTF-8字符串。

我相信我很好,因为维基百科似乎表明字节顺序对UTF-8无关紧要,而字节顺序标记基本上被降级为表示该字符串为UTF-8的标题。

编辑:注意我正在尝试使用UTF-8字符串作为UUID中使用的哈希的种子。

2 个答案:

答案 0 :(得分:5)

字节数组没有字节序问题。无论机器架构如何,每个人都同意数组中的第一个元素具有最低地址。 Guid不是一个字节数组,它是一个结构,其字段不是字节。因此对字节顺序很敏感。

utf-8编码的字符串是byte []。 ComputeHash()需要一个byte []。因此,它们对字节序不敏感。

答案 1 :(得分:2)

UTF8没有多个字节顺序 相反,UTF8规范精确定义了用于编码非ASCII字符的字节顺序。

但是,您无法将任意哈希解析为UTF8。