如何将php的mb_convert_encoding()转换为C#等效项

时间:2018-06-28 09:14:52

标签: c# php hash md5

我尝试了相当失败的尝试,将以下php代码转换为C# 并需要帮助。

php代码是

$string="012014Te$ting#501834502014060007400";
$salt = "Cli3ntH@sah";
$utfString=mb_convert_encoding($string.$salt,ÄSCII");
$hashTag=sha1($utfString,true);
$Hash = base64_encode($hashTag);

带有C#代码

    byte[] ascii = Encoding.ASCII.GetBytes(objtohash);
    byte[] utf8 = Encoding.Convert(Encoding.ASCII, Encoding.UTF8, ascii);
    byte[] hashBytes2 = sha1.ComputeHash(utf8);
    var Hash  = Convert.ToBase64String(hashBytes2);

还尝试了此操作,其中objtohash = $ string。$ salt(即串联)

var sha1 = new System.Security.Cryptography.SHA1Managed();
//convert to ascii byte array
byte[] AScii = EncodeAscii(objtohash);
//Hash it
byte[] hashBytes = sha1.ComputeHash(AScii);
//convert it to base 64
var Hash = Convert.ToBase64String(hashBytes);

我已经按照SO尝试了其他几种方法,但是我无法获得与php示例相同的哈希值,希望有人可以做到这一点并希望给出原因的解释。

谢谢

1 个答案:

答案 0 :(得分:0)

语法错误是手指麻烦。

答案是,..基本上,通过尝试使用谷歌搜索可以找到的任何和所有组合是:

        var objtohashArry = Encoding.ASCII.GetBytes(objtohash);
        var HashSharresult = SHA1.Create().ComputeHash(objtohashArry);
        var requestHash = Convert.ToBase64String(HashSharresult);
        RequestHash = requestHash;