การใช้อัลกอริทึมประสิทธิภาพสูง 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 แทนการเพิ่มสองแบบ (Uncomment Uselea = 1) แต่ช้าลงในโปรเซสเซอร์ Skylake นอกจากนี้ Intel ในการอ้างอิงการเพิ่มประสิทธิภาพ Maual ทำให้เราไม่พอใจกับ Lea แทนการเพิ่มสองเพิ่มเนื่องจากช้าลงในโปรเซสเซอร์อะตอม
MD5_Transform-X64 เปิดตัวภายใต้ใบอนุญาตคู่และคุณอาจเลือกที่จะใช้ภายใต้ใบอนุญาตสาธารณะ Mozilla 2.0 (MPL 2.1 มีให้บริการจาก https://www.mozilla.org/en-us/mpl/2.0/) https://www.gnu.org/licenses/lgpl.html)
MD5_Transform-X64 ขึ้นอยู่กับรหัสต่อไปนี้โดย Peter Sawatzki
ประกาศเดิมโดย Peter Sawatzki ดังต่อไปนี้
FastMD5(@buff[ 0 ], length(buff));
การใช้งาน Delphi โดย [email protected]
https://github.com/passbyyou888/fastmd5/
2018-1-27