Убедитесь, что вы правильно заканчиваете строку, либо заканчивая символом '|' или удаление ненужного завершающего символа «|».
Также убедитесь, что метод, который вы используете, не добавляет внутрь метода ничего, что могло бы исказить то, что вы ожидаете. (Я думаю, что соль, основанная на конкретной машине, на которой вы находитесь, не знает, делает ли она это или нет)
Я пытался сгенерировать хэш здесь 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;
}
}
}
person
Mr. Mr.
schedule
10.09.2012