检查您是否正确地结束了该行,或者使用尾随“|” 或删除不必要的尾随“|”。
还要检查您使用的方法是否没有在方法中添加任何会扭曲您所期望的内容的其他内容。(我正在考虑基于您所使用的特定机器的盐,不知道它是否这样做)
我一直在尝试使用这里http://shagenerator.com/生成哈希:
ABC|password|1|Test Reference|1.00|20120912123421
给出:
25a1804285bafc078f45e41056bcdc42e0508b6f
您可以使用我的输入获得与您的代码相同的密钥吗?
更新:
你可以试试这个方法,而不是HashPasswordForStoringInConfigFile()
看看你是否更接近:
private string GetSHA1String(string text)
{
var UE = new UnicodeEncoding();
var message = UE.GetBytes(text);
var hashString = new SHA1Managed();
var hex = string.Empty;
var hashValue = hashString.ComputeHash(message);
foreach (byte b in hashValue)
{
hex += String.Format("{0:x2}", b);
}
return hex;
}
更新 2:
检查您的编码,我发现我可以将哈希输出与:
var UE = new UTF8Encoding();
更新 3:
以下代码在控制台应用程序中为我工作,我看到哈希生成相同的值,并且我还能够将输出与http://shagenerator.com/进行比较:
using System;
using System.Security.Cryptography;
using System.Text;
using System.Web.Security;
namespace SecurepayPaymentGatewayIntegrationIssue
{
class Program
{
static void Main(string[] args)
{
var text = @"ABC|password|1|Test Reference|1.00|20120912123421";
Console.WriteLine(GetSHA1String(text));
Console.WriteLine(FormsAuthentication.HashPasswordForStoringInConfigFile(text, "sha1").ToLower());
Console.ReadKey();
}
private static string GetSHA1String(string text)
{
var UE = new UTF8Encoding();// ASCIIEncoding(); // UnicodeEncoding();
var message = UE.GetBytes(text);
var hashString = new SHA1Managed();
var hex = string.Empty;
var hashValue = hashString.ComputeHash(message);
foreach (byte b in hashValue)
{
hex += String.Format("{0:x2}", b);
}
return hex;
}
}
}