Verwirrt bei der Verwendung von SHA256-Code von Bitcoin Core

Ich habe mir den Bitcoin Core-Code angesehen, um seinen SHA256-Code zu verwenden, bin aber verwirrt darüber, wo ich hinschauen sollte.

In bitcoin/src/crypto/sha256.h gibt es CSHA256

und in bitcoin/src/crypto/sha256.cpp gibt es Namespaces namens sha256_sse4, sha256_shani.

Und dann gibt es noch bitcoin/src/hash.h

Erklärungen und Anleitungen wären sehr willkommen.

Antworten (1)

sha256.hhat die exportierten (von außen sichtbaren) Methoden und Funktionen. Um SHA256 zu berechnen, sollten Sie #includedas tun.

  • sha256_sse4.cpp
  • sha256_sse41.cpp
  • sha256_avx2.cpp
  • sha256_shani.cpp

enthalten SHA256-Transformationsfunktionen (verwendet in SHA256.Write), die jeweils auf verschiedene Prozessoren mit unterschiedlichen Befehlssätzen spezialisiert sind. Oben ist die Liste der Reihe nach, die meisten Computer unterstützen SSE4, aber nur wenige unterstützen den SHA-NI-Befehlssatz, der der schnellste Weg ist, wie ein neuer Prozessor SHA256 berechnen kann.

sha256.cppenthält andere Methoden, die keinen Engpass darstellen, Funktionen, die prüfen, welche Befehlssätze unterstützt werden, Tests sowie eine reine C++-Transformationsfunktion für ältere und Nicht-x86-Computer.

hash.hbevorzugt Polymorphismus über C++-Templates.

Beispiele: