此代码生成一个 32 长度的 UTF-16 字符串,我从 java 移植它。问题是,输出与此处不同。
我认为问题在于 Java 将 UTF-16 作为 Big-Endian 处理,而 C# 将 UTF-16 作为 Little-Endian 处理。
首先,我的字符串使用 bouncy caSTLe 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/