Подпись payfort с использованием sha256

https://docs.payfort.com/docs/in-common/build/index.html#create-signature-value

Мне нужна помощь в создании подписи 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 с 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())));
}

Вы не можете расшифровать хэши. Не могли бы вы показать нам код, который вы пробовали до сих пор для генерации хэшей?

Llama 10.09.2018 09:28

Кроме того, я получаю тот же хэш, что и их пример, когда использую их пример ввода, поэтому можно разумно ожидать, что любой найденный вами пример использования SHA256 будет работать.

Llama 10.09.2018 09:31
1
2
665
1

Ответы 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);
            }

Другие вопросы по теме