Перенести с PHP на C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, пожалуйста, помогите перенести данный код на c# Заранее спасибо.
    public function ik_sign($param) // интеркасса генератор контрольной цифровой подписи со стороны сервера
    {
        $data = $this->ik_sort($param);
        $ikSign = $data['ik_sign']; // сохраняем приходящую переменную
        unset($data['ik_sign']); // удаляем придодащую переменную, для генирации подписи
        $key = ($data['ik_pw_via'] == 'test_interkassa_test_xts') ? $this->ik['test_key'] : $this->ik['key'];
        if ($data['ik_pw_via'] == 'test_interkassa_test_xts' && !$this->ik['testing']) return false;
        ksort ($data, SORT_STRING); // сортируем массив
        array_push($data, $key); // внедряем переменуую $key в массив
        $signStr = implode(':', $data); // записываем массив в формат @string через : 
        $sign = base64_encode(md5($signStr, true)); // хешируем подпись
        return ($sign == $ikSign) ? true : false;
    }

Решение задачи: «Перенести с PHP на C#»

textual
Листинг программы
static bool CheckSign(Dictionary<string, string> data)
        {
            const string KEY = "{KEY}";
            const string TESTKEY = "{TESTKEY}";
 
            var oldSign = data["ik_sign"];
            data.Remove("ik_sign");
 
            var key = data["ik_pw_via"] == "test_interkassa_test_xts" ? TESTKEY : KEY;
 
            var array = data.OrderBy(x => x.Key).Select(x => x.Value).ToList();
            array.Add(key);
 
            var signString = string.Join(":", array);
 
            using (var md5 = MD5.Create())
            {
                var bytes = md5.ComputeHash(Encoding.UTF8.GetBytes(signString));
 
                var newSign = Convert.ToBase64String(bytes);
 
                return oldSign == newSign;
            }
        }

Оцени полезность:

6   голосов , оценка 4.167 из 5