此代码生成一个32长度的UTF-16字符串,我从java移植它。问题是,输出与此处不同。
我认为问题在于Java将UTF-16作为Big-Endian和C#Little-Endian处理。
首先,我的字符串使用充气城堡Pkcs5s2加密,然后我们继续使用Password_Hash方法将其放入字符串中。
所以我的问题是,如何使用Big-Endian运行此循环,然后生成与java中相同的字符串。
答案 0 :(得分:2)
我在代码中看到文本编码甚至重要的唯一地方就是这句话:
Encoding.UTF8.GetBytes(USER_SALT);
它使用UTF-8,而不是UTF-16。
如果你想要一个big-endian UTF-16,你可以使用Encoding.BigEndianUnicode而不是Encoding.UTF8。