Implementação do algoritmo de alto desempenho MD5 com Delphi
Arquitetura do processador: x86, x64
Plataforma suporta: Win32, Win64
Compatível: HTTPS e OpenSSL
Suporte ao arquivo: maior que 4g
Algoritmo de assembler FastMD5 por Maxim Masiutin
https://github.com/maximmasiutin/md5_transform-x64
A principal vantagem desta versão de 64 bits é que ela carrega 64 bytes de mensagem de hash em 8 registros de 64 bits (RBP, R8, R9, R10, R11, R12, R13, R14) no início, para evitar operações de carga de memória excessivas em todo o rotina.
Para operar com os valores de 32 bits armazenados em bits mais altos de um registro de 64 bits (bits 32-63) usa "ror" por 32; 8 Macro variáveis (M1-M8) são usadas para manter o registro ou o estado corrente de se o registro foi realizado ou não.
Ele também possui a capacidade de usar a instrução LEA em vez de dois acrescentares de eco (não -declaração uselea = 1), mas é mais lento nos processadores Skylake. Além disso, a Intel na referência de otimização que a Maual nos desencoraja de Lea como substituição de dois acréscimos, pois é mais lenta nos processadores de átomos.
MD5_Transform-X64 é liberado sob uma licença dupla e você pode optar por usá-lo sob a licença pública de Mozilla 2.0 (MPL 2.1, disponível em https://www.mozilla.org/en-us/mpl/2.0/) ou a Licester Geral License Diretor da GNU Versão 3, datada de 29 de 2007 (lg 3 de junho de 2007 (LG 3 de junho (LG) ou a versão geral da GNU, de 29 de junho de 2007 (lg de 29 de junho (LG 3 de junho (LG), de 29 de junho de 2007 (LG), de 29 de junho de 2007 (LG), da Lig. https://www.gnu.org/license/lgpl.html).
MD5_Transform-X64 é baseado no código a seguir de Peter Sawatzki.
O aviso original de Peter Sawatzki segue.
FastMD5(@buff[ 0 ], length(buff));
Implementação de Delphi por [email protected]
https://github.com/passbyyou888/fastmd5/
2018-1-27