末尾に「|」を付けて、行を正しく終了していることを確認してください。または不要な末尾の'|'を削除します。
また、使用しているメソッドが、期待しているものを歪めるようなものをメソッド内に追加していないことを確認してください。(私はあなたがこれを行うかどうかわからないあなたが使用している特定のマシンに基づいて塩を考えています)
私はこれを使用して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;
}
}
}