Die einfache Implementierung des SHA-3 Keccak Hash an die falsche Ausgabe in C#?
Ich halte es kurz und einfach! Ich Lerne C#, und ich bin versucht zu Holen Sie sich die HashLib Bibliothek @ https://hashlib.codeplex.com/ arbeiten für die neuen SHA-3 Keccak-Algorithmus. Ich habe geschrieben eine einfache Konsole/Win32-Anwendung, die angeblich für die Ausgabe der korrekten hash-code, aber es funktioniert nicht!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Diagnostics;
using HashLib;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
{
string passPhrase = "";
IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512();
HashResult r = hash.ComputeString(passPhrase, System.Text.Encoding.ASCII);
Console.WriteLine(r.ToString().ToLower().Replace("-",""));
Console.WriteLine("{0}, {1}, {2}", hash.BlockSize, hash.HashSize, hash.Name);
Console.ReadLine();
}
}
}
}
Die Anwendung baut und betreibt ok, aber die Ausgabe ist sehr falsch. Wenn ich andere Leute 's Implementierungen des Keccak-Algorithmus, bekomme ich unterschiedliche Ergebnisse, und es nicht mit z.B. dieser wiki-Beitrag. https://en.wikipedia.org/wiki/SHA-3 So etwas ist offensichtlich falsch.
Wenn ich aus dem der text leer, wie pro Beispiel, bekomme ich die folgende: "df987cfd23fbc92e7e87faaca300ec3f etc. etc.", während der wiki und anderen tools, die sagen, ich soll mich
"0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e"
,das ist etwas ganz anderes. Ich habe auch versucht es mit nicht-leeren Saiten natürlich.
Hat jemand einen Vorschlag?
sieht aus wie die Werte, die Sie bekommen und waren für SHA-3 -256 ebenso würde ich persönlich update die HashLib und Holen Sie sich die neueste version
David, es tut mir Leid zu sagen, dass der neueste code (changeset 78295) das problem nicht lösen. Wenn ich den folgenden code verwenden, IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512(); HashResult res = hash.ComputeString("", System.Text.- Codierung.ASCII); string-TT = res.ToString(); in meiner VS 2012 IDE, ich bin immer ein Ergebnis wie DF987CFD-23FBC92E-7E87FAAC-A300EC3F-AA1DBADC-678E8EE9-4A830968-F22D9209-64AB402D-C5D0F7B2-0C9644BE-08056555-C789D295-8BDA3DF9-8C94BACC-EA25D3C1, die dasselbe ist wie das problem angegeben, ich bin mir nicht sicher, ob die änderungen inplace Wenn ich den test-Vektor wurde aus der Datei entnommen
InformationsquelleAutor user1933076 | 2012-12-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre version von HashLib ist zu alt. Wenn man sich die Letzte änderungen sehen Sie die test-Vektor geändert von die, die Sie bekam, die Sie bekommen sollte. (Der Algorithmus verändert, natürlich.)
Der Algorithmus wurde geändert, als Keccak wurde Sie akzeptiert und als SHA-3.
InformationsquelleAutor David Schwartz