我正在尝试将我的系统连接到银行支付系统。问题是,如果这不是一场彻底的灾难,他们的文档大多是不正确的。
在 3D 安全系统的文档中,银行要求我填写一个 html 表单并将其提交到他们的系统。表单应包含一些数据和数据的 SHA1 哈希值和数据。我试了很多次,但是银行系统一直返回“Hash not correct”的错误。
在检查了他们的示例 C# 代码后,我发现了他们用来获取哈希结果的函数。问题是函数正在对数据做一些其他的事情,而不仅仅是散列它们。更大的问题是我无法找出这段代码对散列的字符串做了什么。
public static string CreateHash(string notHashedStr)
{
SHA1 sha1 = new SHA1CryptoServiceProvider();
byte[] notHashedBytes = System.Text.Encoding.ASCII.GetBytes(notHashedStr);
byte[] hashedByte = sha1.ComputeHash(notHashedBytes);
string hashedStr = System.Convert.ToBase64String(hashedByte);
return hashedStr;
}
我几乎没有 .Net 框架的经验,而且我在 Mac 上,所以我无法轻松测试代码,而且 MSDN 绝对不适合我(我大部分时间都是 Ruby 开发人员,而且我知道足够多的 C)。如果有人能解释这些函数对要散列的字符串的作用,我会很高兴。