这段代码产生了一个32长度的UTF-16字符串,我是从Java移植过来的。问题是,此处的输出与此处不同。

我认为问题在于Java将UTF-16视为Big-Endian和C#Little-Endian。

首先使用弹力城堡Pkcs5s2对我的字符串进行加密,然后继续使用Password_Hash方法将其放入字符串中。

所以我的问题是,如何使此循环使用Big-Endian运行,然后生成与Java中相同的字符串。

最佳答案

我在您的代码中唯一看到文本编码甚至重要的地方是以下语句:

Encoding.UTF8.GetBytes(USER_SALT);


而且它使用的是UTF-8,而不是UTF-16。

如果要使用大尾数UTF-16,则可以使用Encoding.BigEndianUnicode而不是Encoding.UTF8。

关于java - C#Little-Endian从Java Big-Endian转换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26469090/

10-13 04:24