将C#代码翻译为Ruby代码

时间:2012-07-31 20:53:33

标签: c# asp.net .net

我正在尝试将我的系统连接到银行支付系统。问题是,如果它不是一个彻底的灾难,他们的文档大多不正确。

在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)。如果有人能解释这些函数对要进行哈希处理的字符串的作用,我将非常高兴。

1 个答案:

答案 0 :(得分:2)

这很简单。

  1. notHashedStr获取ASCII编码的字节。
  2. 从该字节创建SHA1哈希
  3. 转换Base64编码字符串中的哈希值。
  4. 返回Base64-SHA1-ASCII-String。
  5. 我从未做过任何红宝石,但它看起来有点像这样。

    require 'digest/sha1'
    returnValue = Digest::SHA1.base64digest 'notHashedStr'