我正在尝试从字符串计算SHA-1哈希,但是当我使用php的sha1函数计算字符串时,我得到的东西与在C#中尝试时有所不同。我需要C#计算与PHP相同的字符串(因为php的字符串是由我无法修改的第三方计算的)。如何获取C#以生成与PHP相同的哈希值?谢谢!!!
字串= s934kladfklada@a.com
C#代码(生成d32954053ee93985f5c3ca2583145668bb7ade86)
string encode = secretkey + email; UnicodeEncoding UE = new UnicodeEncoding(); byte[] HashValue, MessageBytes = UE.GetBytes(encode); SHA1Managed SHhash = new SHA1Managed(); string strHex = ""; HashValue = SHhash.ComputeHash(MessageBytes); foreach(byte b in HashValue) { strHex += String.Format("{0:x2}", b); }
PHP代码(生成a9410edeaf75222d7b576c1b23ca0a9af0dffa98)
sha1();
使用ASCIIEncoding而不是UnicodeEncoding。PHP使用ASCII字符集进行哈希计算。