将C#代码翻译成Ruby代码
我试图将我的系统连接到银行支付系统。问题是,如果它不是完全的灾难,他们的文档大多不是正确的。将C#代码翻译成Ruby代码
在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框架几乎没有经验,也是我在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')'。 – Candide 2012-07-31 21:09:42
+1 cool thanks :) – 2012-07-31 21:12:17
伊克!你在说什么*银行? ;-)(抱歉题外话) – Jeroen 2012-07-31 21:04:34
该散列让我想起了[OAuth的(http://oauth.net/core/1.0/) – 2012-07-31 21:14:54