Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#md5哈希和Php_C#_Php_Hash_Md5 - Fatal编程技术网

C#md5哈希和Php

C#md5哈希和Php,c#,php,hash,md5,C#,Php,Hash,Md5,我用md5散列在c#中加密了一个字符串,并用下面的代码将其存储到mysql数据库中 function getMd5Hash(string md5) { string md5; MD5 md5hash = new MD5CryptoServiceProvider(); md5hash.ComputeHash(ASCIIEncoding.ASCII.GetBytes(pass)); byte[] result = md5hash.Hash; StringBu

我用md5散列在c#中加密了一个字符串,并用下面的代码将其存储到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);
函数getMd5Hash(字符串md5) { 字符串md5; MD5 md5hash=新的MD5CryptoServiceProvider(); 计算哈希(ascienceoding.ASCII.GetBytes(pass)); 字节[]结果=md5hash.Hash; StringBuilder strbuilder=新StringBuilder(); for(int i=0;i 现在,如何在PHP中对同一字符串进行散列,以获得与c#中的函数匹配的值? 我一直在寻找,但到目前为止还没有找到解决方案。
谢谢你的帮助,也很抱歉我的英语不好:)

我最近遇到了同样的问题,并找到了一个很好的资源。我们还试图对PHP表单中的一个项目进行加密,将其存储在MySQL中,并希望在C#应用程序中对其进行解密(以及在C#应用程序中使用)。它使用的AES也比MD5安全得多。下面是我的PHP代码片段

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\u to\u encrypt)
,然后调用
decrypt($encrypted\u text)
将其取出。然而,由于我只是在PHP方面,您可能需要参考前面的链接,以了解在C#端对其进行解密的原因。只为半个答案道歉


这只有在你也能控制C#并且你可以选择离开MD5的情况下才能起作用

请不要使用MD5进行加密,因为它不安全。@Duenna如果它只是用于计算文件或资源的MD5哈希,那么就不会有salt值,因此这是用于加密的合理假设。加上一行…ASCII.GetBytes(pass)指向密码。@RonBeyer MD5是一种哈希算法,不作为加密的一部分使用。但作为更广泛的加密技术的一部分techniques@Anton,你能公布你实际使用的代码吗?问题中的代码将无法编译,并且不是有效的C#语法。重新生成散列的方法是从数据库中读取salt值,再次生成散列,并将其与存储的值进行比较。@Duenna我了解散列是什么,请参阅以获取有关为什么不应使用MD5来支持更好的函数(如SHA256)的信息。