Mise en œuvre de l'algorithme haute performance MD5 avec Delphi
Architecture du processeur: x86, x64
Plateforme de support: Win32, Win64
Compatible: HTTPS et OpenSSL
Support de fichier: supérieur à la 4G
Algorithme de l'assembleur FastMD5 par maxime masiutin
https://github.com/maximmasiutin/md5_transform-x64
Le principal avantage de cette version 64 bits est qu'il charge 64 octets de message haché dans 8 registres 64 bits (RBP, R8, R9, R10, R11, R12, R13, R14) au début, pour éviter que les opérations de chargement de mémoire excessives de faire la routine.
Pour fonctionner avec un magasin de valeurs 32 bits dans des bits supérieurs d'un registre 64 bits (bits 32-63) utilise "ROR" par 32; 8 Les variables macro (M1-M8) sont utilisées pour garder un enregistrement ou un état corrent pour savoir si le registre a été rordé ou non.
Il a également la capacité d'utiliser l'instruction LEA au lieu de deux ajouts de séquentiment (non comment uselea = 1), mais il est plus lent sur les processeurs Skylake. En outre, Intel dans la référence d'optimisation MAUAL nous décourage de LEA en remplacement de deux ajouts, car il est plus lent sur les processeurs atomes.
MD5_Transform-x64 is released under a dual license, and you may choose to use it under either the Mozilla Public License 2.0 (MPL 2.1, available from https://www.mozilla.org/en-US/MPL/2.0/) or the GNU Lesser General Public License Version 3, dated 29 June 2007 (LGPL 3, available from https://www.gnu.org/licenses/lgpl.html).
MD5_TRANSFORM-X64 est basé sur le code suivant de Peter Sawatzki.
L'avis original de Peter Sawatzki suit.
FastMD5(@buff[ 0 ], length(buff));
Implémentation de Delphi par [email protected]
https://github.com/passbyyou888/fastmd5/
2018-1-27