Внедрение высокопроизводительного алгоритма MD5 с Delphi
Архитектура процессора: x86, x64
Поддержка платформы: Win32, Win64
Совместим: https и openssl
Поддержка файлов: больше 4G
Алгоритм ассемблера FASTMD5 от Maxim Masiutin
https://github.com/maximmasiutin/md5_transform-x64
Основным преимуществом этой 64-битной версии является то, что она загружает 64 байта хэшированного сообщения в 8 64-битных регистров (RBP, R8, R9, R10, R11, R12, R13, R14) в начале, чтобы избежать чрезмерной операции нагрузки на память через рутину.
Для работы с 32-битными значениями хранится в более высоких битах 64-битного регистра (биты 32-63) использует «ror» на 32; 8 макроэнергии (M1-M8) используются для сохранения записи или корректного состояния того, был ли регистр Ror'ed или нет.
Он также обладает способностью использовать инструкцию LEA вместо двух последовательных добавлений (неуместная uselea = 1), но она медленнее на процессорах Skylake. Кроме того, Intel в ссылке на оптимизацию мауал не поощряет нас в качестве замены двух добавлений, так как он медленнее на процессорах атома.
Md5_transform-x64 выпущен по двойной лицензии, и вы можете использовать его в соответствии с публичной лицензией Mozilla 2.0 (MPL 2.1, доступно по адресу https://www.mozilla.org/en-us/mpl/2.0/) или GNU Lesser General Public Public License Версия 3, от 29 июня 2007 г. https://www.gnu.org/licenses/lgpl.html).
MD5_Transform-X64 основан на следующем коде Питера Савацки.
Первоначальное уведомление Питера Савацки следует.
FastMD5(@buff[ 0 ], length(buff));
Реализация Delphi по [email protected]
https://github.com/passbyyou888/fastmd5/
2018-1-27