Intereting Posts
Производительность источника событий Добавление новой строки в динамической форме yii2, в новой строке js не работает Восстановление базы данных MySQL с помощью PHP Как я могу получить сообщения с изображениями из базы данных WordPress, если WordPress больше не установлен? PHP-анализ xml-файла Как реализовать Content-Disposition: вложение? Ошибка MySQL – «У вас есть ошибка в синтаксисе SQL» Перенаправление на URL после входа в систему с помощью Socialite в Laravel getUser в конструкторе сервисов Symfony2 MVC для продвинутых разработчиков PHP Как вы можете избежать вставки нулевой записи в базу данных с помощью ассоциации «один ко многим» с использованием доктрины? Разделите все, начиная от строки, кроме числа и знаменателя валюты Каков наилучший способ включить php-файл в качестве шаблона? Результаты MySQL для JSON с PHP Выбор всех полей, кроме только одного поля в mysql

c # md5 и php md5 не совпадают

вот мой код подписи c #

using System; using System.Text; public class Test { public static void Main() { string str; string syskey = "123456789"; str = GenSignature(syskey,"foo","20170426001757"); Console.WriteLine(str); } public static string GenSignature(string syskey,params string[] paramValues) { string source = ""; for (int i = 0; i < paramValues.Length; i++) { if (!string.IsNullOrEmpty(paramValues[i])) { source += (string.IsNullOrEmpty(source) ? "" : "&") + paramValues[i]; } } if (string.IsNullOrEmpty(source)) { return ""; } source += "&" + syskey; // Debug.WriteLine(source); using (System.Security.Cryptography.MD5 m = System.Security.Cryptography.MD5.Create()) { byte[] hashData = m.ComputeHash(UTF8Encoding.UTF8.GetBytes(source)); return BitConverter.ToString(hashData).Replace("-", "").ToUpper(); } } } 

и код подписи php ниже:

 function getSignature() { $syskey = "123456789"; $sysCode = "foo"; $timeStamp = "20170426001757"; $str = "&".$sysCode."&".$timeStamp."&".$syskey; return strtoupper(md5($str)); } echo getSignature(); 

Я не знаю, c # очень хорошо, но результат, который я получаю, совершенно другой, знал ли кто-нибудь два языка и рассказывал мне что-то, спасибо.

Solutions Collecting From Web of "c # md5 и php md5 не совпадают"

В примере PHP вы добавляете каждую часть с амперсандом ( & ), однако в версии C # вы добавляете каждую часть, кроме первой:

 source += (string.IsNullOrEmpty(source) ? "" : "&") + paramValues[i]; 

string.IsNullOrEmpty(source) вернет true с первого раза, поскольку вы первоначально установили source в "" , поэтому амперсанд не будет добавлен в самом начале строки.

Измените свой код на это, и он должен работать:

 source += "&" + paramValues[i]; 

Онлайн-тест: https://dotnetfiddle.net/KhoFtL