0
我试图实现在C#中计算的散列,其应该匹配哈希生成用食盐 - 等价与Perls的模块
Perl代码是下面
#!/user/bin/perl
#
use Digest::MD5 'md5_hex';
my $rawvalue = "HelloWorld";
my $salt = "12345678";
my $md5 = Digest::MD5->new;
$md5->add($rawvalue,$salt);
my $md5Digest = $md5->hexdigest;
print $md5Digest;
print "\n";
的由Perl的模块生成的哈希输出是:a4584f550a133a7f47cc9bafd84c9870
我已经在C#中尝试了以下方法 - 但不能实现相同的结果。
string salt = "12345678";
string data = "HelloWorld";
byte[] saltbyte = System.Text.Encoding.UTF8.GetBytes(salt);
byte[] databyte = System.Text.Encoding.UTF8.GetBytes(data);
//HMACMD5
HMACMD5 hmacmd5 = new HMACMD5(saltbyte);
byte[] hmacmd5hash = hmacmd5.ComputeHash(databyte);
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < hmacmd5hash.Length; i++)
{
sBuilder.Append(hmacmd5hash[i].ToString("x2"));
}
Console.WriteLine(sBuilder.ToString()); //outputs 2035a1ff1bf3a5ddec8445ada2e4883c
//HMACSHA1
HMACSHA1 hmacsha1 = new HMACSHA1(saltbyte);
byte[] hmacsha1hash = hmacsha1.ComputeHash(databyte);
sBuilder = new StringBuilder();
for (int i = 0; i < hmacsha1hash.Length; i++)
{
sBuilder.Append(hmacsha1hash[i].ToString("x2"));
}
Console.WriteLine(sBuilder.ToString()); //outputs a8beb5b2f63c9574fea28f4c1d9e59306a007924
作为最后的手段我可能诉诸使perl的CGI只是为了计算遗留散..但我想避免这种尽可能!
谢谢!
谢谢了! - 帮助:) – Sekhar