我在c#中使用md5 hash加密了一个字符串,并将其存储到mysql数据库中,代码如下。
function getMd5Hash(string md5)
{
string md5;
MD5 md5hash = new MD5CryptoServiceProvider();
md5hash.ComputeHash(ASCIIEncoding.ASCII.GetBytes(pass));
byte[] result = md5hash.Hash;
StringBuilder strbuilder = new StringBuilder();
for (int i = 0; i < result.Length; i++)
{
strbuilder.Append(result[i].ToString("x2"));
}
md5 = strbuilder.ToString();
}
//salt is ten random character
string pass = getMd5Hash(getMd5Hash("fermentasi")+salt);
现在,如何在PHP中对相同的字符串进行哈希处理以获得与c#中的函数匹配的值? 我一直在寻找,但到目前为止还没有找到解决方案。 谢谢你的帮助,抱歉我的英语不好:)
答案 0 :(得分:0)
我最近遇到了同样的问题,发现了一个非常好的资源here。我们还尝试从PHP表单加密项目,将其存储在MySQL中,并希望在C#应用程序中解密(以及在其中使用)。它使用AES,它比MD5更安全。这是我的PHP代码的snipet
function encrypt($text) {
$iv = "45287112549354892144548565456541";
$key = "anjueolkdiwpoida";
$block = mcrypt_get_block_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv]);
$crypttext64=base64_encode($crypttext);
return $crypttext64;
}
function decrypt ($text) {
$iv = "45287112549354892144548565456541";
$key = "anjueolkdiwpoida";
$crypttext64=base64_decode($text);
$decrypted = mcrypt_decrypt(MCRYPT_RIJNDAEL_256 , $key, $crypttext64 , MCRYPT_MODE_CBC, $key );
return $decrypted;
}
所以你需要做的就是在将它存储到数据库之前调用encrypt($text_to_encrypt)
,然后你可以调用decrypt($encrypted_text)
将它取回。但是,由于我只是在PHP方面,您可能需要参考上一个链接以查看在C#端解密它的内容。道歉只有半个答案。
这只有在你控制了C#并且你可以选择远离MD5的情况下才有效。