【问题标题】:PayFort Signature using SHA256使用 SHA256 的 PayFort 签名
【发布时间】:2019-02-14 14:27:02
【问题描述】:

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

我需要一些有关为 PayFort 令牌化生成 SHA256 签名的帮助。链接中的示例为您提供了有关如何标记您的请求的基本指南,但我需要的是有关如何使用密钥生成 SHA256 签名并使用密钥解密响应签名的信息。我拥有请求和响应释义键所需的所有数据。我不完全了解如何在 C# 中使用密钥生成正确的 SHA256 签名。我尝试了不同的示例来生成 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())));
}

【问题讨论】:

  • 您无法解密哈希。您能向我们展示您迄今为止尝试生成哈希的代码吗?
  • 另外,当我使用他们的输入示例时,我得到的哈希值与他们的示例相同,因此您找到的任何使用 SHA256 的示例都应该可以正常工作。

标签: c# integration payfort


【解决方案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);
            }

【讨论】:

    猜你喜欢
    • 2012-05-27
    • 2023-03-10
    • 2020-10-08
    • 1970-01-01
    • 2012-01-19
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    相关资源
    最近更新 更多