Подпись PayFort с использованием SHA256
https://docs.payfort.com/docs/in-common/build/index.html
Мне нужна помощь в создании подписи SHA256 для токенизации PayFort. Пример в ссылке дает вам основные рекомендации о том, как маркировать ваш запрос, но мне нужна информация о том, как сгенерировать подпись SHA256 с помощью секретного ключа и расшифровать подпись ответа с помощью ключа. У меня есть все данные, необходимые для перефразирования ключей запроса и ответа. Я не совсем понимаю, как создать правильную подпись SHA256 с секретным ключом в C#. Я пробовал разные примеры для генерации подписи SHA256, но она возвращает несоответствие подписи.
Пример из документации PayFort:
SHA Request Phrase: PASS
SHA-Type: SHA-256
PASSaccess_code=SILgpo7pWbmzuURp2qrilanguage=enmerchant_identifier=MxvOupuGmerchant_reference=MyReference0001service_command=TOKENIZATIONPASS
Как я могу правильно зашифровать и расшифровать его в C#.
Любая помощь приветствуется.
Редактировать:
Я стреляю в слепую, любой, кто знаком с PayFort Integration с C#, может направить меня
public static String Sign(String data, String key)
{
KeyedHashAlgorithm algorithm = new HMACSHA256();
Encoding encoding = new UTF8Encoding();
algorithm.Key = encoding.GetBytes(key);
return Convert.ToBase64String(algorithm.ComputeHash(
encoding.GetBytes(data.ToCharArray())));
}
1 ответ
Во-первых, вам нужно сгенерировать свою подпись в виде строки. Подпись включает код доступа, язык и т. Д. Затем преобразуйте эту подпись в байты. Затем инициализируйте объект sha256Managed. Передайте параметр байтов этому объекту, и он вернет вам еще один байт, но в формате sha256Managed. Теперь вам нужно установить его формат в foreach.
Пожалуйста, найдите код ниже, это поможет вам.
byte[] bytes = Encoding.UTF8.GetBytes(signature);
SHA256Managed hashstring = new SHA256Managed();
byte[] hash = hashstring.ComputeHash(bytes);
string hashString = string.Empty;
foreach (byte x in hash)
{
hashString += String.Format("{0:x2}", x);
}