0

24 時間分のプログラミングを行った後、ようやくクラックできました。hashcalc のように、ハッシュ化された 16 進文字列入力の値を表示する C# WindowsForm アプリケーションを作成したいと考えています。グーグルで検索しても文字列入力しかできませんでした。To demonstrate, the input 060201080808040602040909080909003583150369840500 should output d8f6b336a4df3336bf7de58a38b1189f6c5ce1e8 and not a6879cb4510b18e8f41b3491ce474fd2ff9e2979 Also this is for SHA1 Hashing so keep it only at that, Thanks!

4

4 に答える 4

1

このため090505050509050009080003000605003569190380108300 に私は持っていますが3b8d562adb792985a7393a6ab228aa6e7526410a、そうではありません3b8d562adb792985a7393a6ab228aa6e752641a

最後のバイトが間違っていると思います。

于 2013-09-21T20:24:17.647 に答える
0

私はあなたの問題を本当に理解していないと思います。任意の入力をハッシュして、任意の方法で出力できます。これを実現するには、選択したエンコーディングで Encoding クラスを使用し、GetBytes() メソッドを呼び出します。次に、SHA1 クラスを取得して、ハッシュ値を計算させます。また、ユーザー テキストの場合は、数値に 16 進形式を使用するように文字列クラスに指示します。これは SHA1 クラスだけに適用されるわけではありません ;)

于 2013-09-16T13:12:02.977 に答える
0
private void button1_Click(object sender, EventArgs e)
{
    string input= "060201080808040602040909080909003583150369840500";
    SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
    byte[] hash = sha1.ComputeHash(ConvertHexStringToByteArray(input));
    string delimitedHexHash = BitConverter.ToString(hash);
    string hexHash = delimitedHexHash.Replace("-", "");

    MessageBox.Show(hexHash); 
}

public static byte[] ConvertHexStringToByteArray(string hexString)
{
    if (hexString.Length % 2 != 0)
    {
        throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString));
    }

    byte[] HexAsBytes = new byte[hexString.Length / 2];
    for (int index = 0; index < HexAsBytes.Length; index++)
    {
        string byteValue = hexString.Substring(index * 2, 2);
        HexAsBytes[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
    }

    return HexAsBytes;
}
于 2013-10-29T01:34:32.883 に答える