Подпись 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);
            }
Другие вопросы по тегам