C#md5 Hash和Php

时间:2015-04-28 13:38:47

标签: c# php hash md5

我在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#中的函数匹配的值? 我一直在寻找,但到目前为止还没有找到解决方案。 谢谢你的帮助,抱歉我的英语不好:)

1 个答案:

答案 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的情况下才有效。