UTF-8对字节顺序敏感

本文关键字:顺序 字节 UTF-8 | 更新日期: 2023-09-27 17:57:25

因此,我需要生成一个UUID,其中包含一个字符串作为哈希函数的输入。

据我所知,MS对GUID的实现是不可移植的,因此不能正确地实现RFC 4122。所以我想知道,如果我把.NET System.Security.Cryptography.SHA1Managed().ComputerHash(data)函数作为UTF-8字符串传递,我是否也陷入了基本相同的陷阱。

我相信我很好,因为维基百科似乎表明字节顺序对UTF-8并不重要,字节顺序标记本质上被降级为一个头部,以表示字符串是UTF-8。

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

UTF-8对字节顺序敏感

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

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

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

但是,您不能将任意哈希解析为UTF8。