最近在使用一款java Api接口的时候,发现提交的数据需要签名。
sdk包是用java写的,签名比较简单,只有一个md5。
在C#中依葫芦画瓢,结果发现java的md5签名和C#的md5签名不一致,导致签名不成功。
经过一些修改之后,在C#中的签名与Java的保持一致。
Java md5 签名
String plain_text="1111111111";
return MD5.stringToMD5(plain_text);
C# md5 签名
String plain_text="1111111111";
char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
MD5 md5 = new MD5CryptoServiceProvider();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(plain_text);
byte[] result = md5.ComputeHash(inputBytes);
int j = result.Length;
char[] str = new char[j * 2];
int k = 0;
for (int i = 0; i < j; i++)
{
byte byte0 = result[i];
str[k++] = hexDigits[byte0 >> 4 & 0xf];
str[k++] = hexDigits[byte0 & 0xf];
}
return new String(str).ToLower();