C#问题转换PHP Hex2bin

时间:2018-07-15 15:04:10

标签: c# php asp.net-mvc

我一直在努力将简单的PHP脚本从PHP转换为c#。

我已经尝试了所有没有成功的转换代码的变体。 我遇到的主要问题是针对PHP输出运行代码结果时结果的匹配。

本质上,我正在尝试构建与PHP hex2bin相同的功能。

对于简单的输入样本,这一切都可以很好地工作,但是对于复杂的项目,它会中断。

这是PHP脚本代码块

PHP:

$challenge = "50F8358C3E894AC1868C6EF8303AC4F14E9831470C046D5F3DBABB2EB588979E";
$secret = "verysecretstring";
$plain = "test";

$hexchall =  **hex2bin($challenge)**

$crypt_secret = md5($hexchall . $secret, true);

RESULT:
crypt_secret = "25a41f897e548d1300d032ba36100d94"

C#:

     public static string MD5_string(string text)
    {
        byte[] asciiBytes = ASCIIEncoding.ASCII.GetBytes(text);
        byte[] hashedBytes = MD5CryptoServiceProvider.Create().ComputeHash(asciiBytes);
        string hashedString = BitConverter.ToString(hashedBytes).Replace("-", "").ToLower();

        return hashedString;
    }



   public static string ConvertHextoASCII(String hexString)
    {
        try
        {
            string ascii = string.Empty;

            for (int i = 0; i < hexString.Length; i += 2)
            {
                String hs = string.Empty;

                hs = hexString.Substring(i, 2);
                uint decval = System.Convert.ToUInt32(hs, 16);
                char character = System.Convert.ToChar(decval);
                ascii += character;

            }

            return ascii;
        }
        catch (Exception ex) { Console.WriteLine(ex.Message); }

        return string.Empty;
    }


    public static string Encrypt_Password()
    {

        //string plain, string challenge, string secret
        var password = "test";
        var challenge = "50F8358C3E894AC1868C6EF8303AC4F14E9831470C046D5F3DBABB2EB588979E";

        var secret = "verysecretstring";

        var hex4 = ConvertHextoASCII(challenge);
        var crypt_secret4 = MD5_string(string.Concat(hex4, secret));
  }

我尝试了很多在堆栈溢出时发现的解决方案,但是没有运气。即使我从C#代码中获得与PHP相同的字节,我也不认为二进制字符串转换会保留所有字符。

请,有人可以指出正确的方向吗?

0 个答案:

没有答案