我有一个由nodejs web服务器生成的sha512密码哈希,由于某种原因,c#没有正确解释它。
db中的哈希是:
09d5c4cfdf9449bba5c8f36f6feba141e91467d2602388930f2b4ec36939e60c3d81f6aec07ebdcab74c67d7c99e516521b5565e09ea547d66dc460a80b06b4e
C#调出的哈希是:
09d5c4cfdf9449bba5c8f36f6feba141e91467d2602388930f2b4ec36939e60c3d81f6aec07ebdcab74c67d7c99e516521b5565e09ea547d66dc460a80b06b㐀攀
正如您所看到的,最后两个字符是非utf8。
MySQL将哈希值存储在utf8_general_ci表中。以下是查询信息的代码片段。
我在某处读到c#字符串默认为utf16,我猜这就是问题所在,我该如何解决?
Command.CommandText = string.Format( "SELECT username, password FROM {0} WHERE state='{1}'", DatabaseTable, ( int )Status.Pending );
OdbcDataReader reader = Command.ExecuteReader( );
QueryCount += 1;
while( reader.Read() ){
string username = reader.GetString(0);
string password = reader.GetString(1);
Console.WriteLine("Password from DB Is: {0}", password);