2017-05-31 3 views
0

Dieses Jahr hat AMD eine neue Serie von x86-64 CPUs mit dem Namen RyZen für Desktops veröffentlicht. RyZen Spezifikation zeigt es bietet neue SSE basierend SHA1 und SHA-256 Anleitung wiki: Intel SHA extension:Suche nach Informationen zur Hardware SHA-2 Beschleunigung

  • SHA1 Anweisungen: SHA1RNDS4, SHA1NEXTE, SHA1MSG1, SHA1MSG2;
  • sha-256 Anleitung: SHA256RNDS2, SHA256MSG1, SHA256MSG2

ich neugierig bin, bereits eine der APIs/Bibliotheken Sie existieren, die diese Anleitung für ultraschnelle Hashing Lmittel der Lage sind, in PHP verwendet werden oder andere Server-Sprachen, wenn Sie AMD RyZen CPU verwenden? Wenn nicht, wann sollten wir erwarten, dass es verfügbar ist?

Da Intel Spezifikation für SHA Hardware für das Jahr 2013 zur Verfügung gestellt hat, scheint es zumindest ein paar Compiler Unterstützung dafür bereitgestellt haben.

+1

Sie können die Suche nach den Befehlsnamen versuchen (aus dem Wiki wie 'sha256msg1' oder in _mm Form "'_mm_sha256msg1_epu32'" von 'shaintrin.h' oder' __builtin_ia32_sha256msg1') in der populären Repository wie Github (oder in Internet) und verstehen sich inklusive gcc/llvm/Compiler-Tests. SHA256 Erweiterung Unterstützung wurde in openssl (https://github.com/openssl/openssl/blob/master/crypto/sha/asm/sha256-mb-x86_64.pl) hinzugefügt, so dass jede PHP/C-Lib mit openssl für sha256 wird Profitieren Sie von der Hardwarebeschleunigung mit den neuesten OpenSSL- und aktuellen CPUs. – osgx

Antwort

2

Unterstützung von Hardware-beschleunigte SHA256 wurde openssl hinzugefügt 1.0.2 [22. Januar 2015]: https://git.openssl.org/gitweb/?p=openssl.git;a=blob;f=CHANGES

1962 Changes between 1.0.1l and 1.0.2 [22 Jan 2015] 

2012 *) Support for new and upcoming Intel processors, including AVX2, 
2013  BMI and SHA ISA extensions. This includes additional "stitched" 
2014  implementations, AESNI-SHA256 and GCM, and multi-buffer support 
2015  for TLS encrypt. 

Also, mit fähige Hardware und den letzten openssl, jede PHP/Python-Bibliothek Die Verwendung von openssl zum Berechnen von SHA256 kann eine hardware-beschleunigte SHA256-Digest-Berechnung verwenden (wenn diese in openssl aktiviert ist und diese Implementierung von der Bibliothek ausgewählt wird). Und Kommandozeile: openssl dgst -sha256 -binary file_to_be_hashed.

Es gibt einige rohe Bindungen von OpenSSL-Bibliothek in PHP: http://php.net/manual/en/function.openssl-digest.php und OPENSSL_ALGO_SHA256 gibt es seit PHP 5.5: which openssl version support for sha256 in php

Linux Kernel Crypto Hardware SHA1/SHA2 seit Version 4.4 verwenden: https://www.phoronix.com/scan.php?page=news_item&px=Linux-4.4-Crypto (http://lkml.iu.edu/hypermail/linux/kernel/1511.0/00383.html); Es ist jedoch unwahrscheinlich, dass PHP/andere Skriptbibliothek Kernel cryptoapi verwendet.

+1

Sie können jeden SHA256-Heavy-Computing-Code profilieren (in linux - mit 'perf record -e Zyklen: u./Program; perf report') und prüfen, welche Anweisungen in den sha1/sha256-Rechenfunktionen verwendet wurden. – osgx

+0

Danke für den openssl Link, das ist sehr informativ. – falero80s

Verwandte Themen