檢查您是否正確結束該行,或者使用尾部「|」或刪除不必要的尾部'|'。
還要檢查您使用的方法是否會在方法內部添加任何會導致您所期望的內容變形的內容。 (我想基於特定機器鹽你是不知道,如果它這樣做或不)
我一直在試圖以此來這裏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;
}
}
}
請您能不能告訴你的代碼(帶屏蔽的祕密) –
好吧,這是如下:FormsAuthentication.HashPasswordForStoringInConfigFile(「XXX | XXX | 0 | 123 | 100.00 | 20120910203805 「,」sha1「)。ToLower(); –
所以你用這個來創建一個散列密碼來保存在配置文件中?只是問,因爲文檔說它適合存儲在配置中。 –