接口对接,对方是java加密,跟C#加密,加密出来的结果不一致。后面那2种分别针对webform和winform的加密跟java加密结果是一致的。
最近和其他公司做接口,原本的MD5加密算法是这样的:
byte[] bytes = Encoding.Default.GetBytes(instr_);
MD5CryptoServiceProvider provider = new MD5CryptoServiceProvider();
return BitConverter.ToString(provider.ComputeHash(bytes));
坑就从这里开始了,各种不对,对面的项目是外包的死活找不出个原因来,还加密3层!!!
最后找到外包,给出他们加密的串,一个个对比,解密,发现MD5这里出问题了。
找到问题就好说了,然后立马百度另外的加密方法:CSDN上面查到的,
Winform:
public
static
string
StringToMD5Hash(
string
inputString)
{
MD5CryptoServiceProvider md5 =
new
MD5CryptoServiceProvider();
byte
[] encryptedBytes = md5.ComputeHash(Encoding.ASCII.GetBytes(inputString));
StringBuilder sb =
new
StringBuilder();
for
(
int
i = 0; i < encryptedBytes.Length; i++)
{
sb.AppendFormat(
"{0:x2}"
, encryptedBytes[i]);
}
return
sb.ToString();
}
Webform:
public
static
string
md5(
string
pwd)
{
string
md5pwd = FormsAuthentication.HashPasswordForStoringInConfigFile(pwd,
"MD5"
);
return
md5pwd;
}
经验证:确实可行!!!