将C#代码翻译成Ruby代码

将C#代码翻译成Ruby代码,c#,asp.net,.net,C#,Asp.net,.net,我正在尝试将我的系统连接到银行支付系统。问题是,如果这不是一场彻底的灾难,他们的文档大多是不正确的 在3D安全系统的文档中,银行要求我填写一份html表格并提交给他们的系统。表单应该包括一些数据和数据的SHA1散列。我尝试了很多次,但银行的系统始终返回“哈希不正确”错误 在检查了他们的示例C#代码之后,我找到了一个用于获取哈希结果的函数。问题是函数对数据做了一些其他的处理,而不仅仅是散列。更大的问题是我无法找出这段代码对散列的字符串做了什么 public static string Create

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

在3D安全系统的文档中,银行要求我填写一份html表格并提交给他们的系统。表单应该包括一些数据和数据的SHA1散列。我尝试了很多次,但银行的系统始终返回“哈希不正确”错误

在检查了他们的示例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 framework上的经验,而且我在mac上,所以我无法轻松测试代码,MSDN绝对不适合我(我大部分时间都是Ruby开发人员,我对C了解得足够多)。如果有人能解释这些函数对要散列的字符串的作用,我将非常高兴。

这很简单

  • notHashedStr
    获取ASCII编码的字节
  • 从该字节创建SHA1哈希
  • 将该散列转换为Base64编码的字符串
  • 返回Base64-SHA1-ASCII-String
  • 我从来没有做过红宝石,但它看起来一定有点像这样

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

    +1
    base64digest
    仅在ruby 1.9中可用。在1.8中,您也可以使用:
    Base64.encode64(Digest::SHA1.Digest('notHashedStr')
    ,这让我想起了哈希