Ich implementiere einen Teil des Bitcoin-Clients in C# und habe festgestellt, dass ich die Wahl zwischen FIPS 140-2 und nicht zertifizierten Versionen von SHA256 habe. Angeblich geben beide Versionen den gleichen Hash aus.
Spielt die Wahl der SHA-2-Bibliothek für Bitcoin eine Rolle? Ist die FIPS-2-Bibliothek in Mono und Mobilgeräten vorhanden?
Sie sollten sich grundsätzlich nie für FIPS-140 entscheiden, es sei denn, Sie haben keine andere Wahl. Die Einhaltung von FIPS-140 wird in erster Linie für Personen bereitgestellt, die FIPS-140 aus regulatorischen oder politischen Gründen einhalten müssen.
Beachten Sie, dass dies nicht bedeutet, dass die FIPS-140- Validierung schlecht ist. Es ist toll. Wenn es Fehler oder Probleme findet, ist das ein reiner Gewinn. Wenn Sie die Wahl zwischen einer FIPS-validierten und einer nicht validierten Implementierung haben, ist erstere die bessere Wahl. Aber das hat nichts damit zu tun, ob Sie FIPS-140-Modi aktivieren.
Ihre Implementierung wurde FIPS-validiert. Beschädige es nicht im Gehirn.
Hier sind einige Leistungsstatistiken, die ich bisher für meine C#-Implementierung erstellt habe:
Auf einen einzelnen öffentlichen ECC-Schlüssel (nach der ECC-Operation) kann der Base58Checked-Algorithmus mit dieser Rate angewendet werden
Algorithm Time for 100,000 Base58Check(byte[] key)
------------------------------ ---------------------------------------------
SHA256Managed() 4500ms
SHA256CryptoServiceProvider() 3640ms <--- CSP FIPS version
Also ja, die FIPS-validierte Version ist schneller und wahrscheinlich besser.
Sehr unregelmäßig
Macher7