Implementación del algoritmo de alto rendimiento MD5 con Delphi
Arquitectura del procesador: x86, x64
Plataforma de soporte: Win32, Win64
Compatible: https y openssl
Soporte de archivo: mayor que 4G
Algoritmo de ensamblador de FastMD5 por Maxim Masiutin
https://github.com/maximmasiutin/md5_transform-x64
La principal ventaja de esta versión de 64 bits es que carga 64 bytes de mensaje hash en 8 registros de 64 bits (RBP, R8, R9, R10, R11, R12, R13, R14) al principio, para evitar operaciones de carga de memoria excesivas a través de la rutina.
Operar con el almacén de valores de 32 bits en bits más altos de un registro de 64 bits (BITS 32-63) utiliza "ROR" por 32; 8 Las variables macro (M1-M8) se utilizan para mantener el registro o el estado corrente de si el registro ha sido rorado o no.
También tiene la capacidad de usar instrucción LEA en lugar de dos adiciones de secuencia (Uncomment Uselea = 1), pero es más lento en los procesadores Skylake. Además, Intel en la referencia de optimización Maual nos desanima de Lea como un reemplazo de dos adiciones, ya que es más lento en los procesadores de átomos.
MD5_Transform-X64 se lanza bajo una licencia dual, y puede optar por usarla bajo la Licencia Pública Mozilla 2.0 (MPL 2.1, disponible en https://www.mozilla.org/en-US/MPL/2.0/) o la Licencia Pública General General de GNU, la versión 39 de junio de 2007 (LGPL 3, disponible de desde desde https://www.gnu.org/licenses/lgpl.html).
MD5_Transform-X64 se basa en el siguiente código por Peter Sawatzki.
El aviso original de Peter Sawatzki sigue.
FastMD5(@buff[ 0 ], length(buff));
Implementación de Delphi por [email protected]
https://github.com/passbyyou888/fastmd5/
2018-1-27