作者:Rambo Qian | 版本:V1.0.00 | 日期:2003-04-10~16
完整實作包含:常數表、位元操作函數、邏輯運算函數、核心輪函數、訊息轉換、主運算流程。
回傳二進位遮罩值(低 n 位為 1):
CREATE FUNCTION dbo.MD5_m_OnBits(@i TINYINT) RETURNS INT WITH ENCRYPTION AS
BEGIN
DECLARE @iRes INT
SELECT @iRes = CASE @i
WHEN 0 THEN 1 -- 000...0001
WHEN 1 THEN 3 -- 000...0011
WHEN 2 THEN 7 -- 000...0111
WHEN 3 THEN 15 -- 000...1111
WHEN 4 THEN 31
WHEN 5 THEN 63
WHEN 6 THEN 127
WHEN 7 THEN 255
WHEN 8 THEN 511
WHEN 9 THEN 1023
WHEN 10 THEN 2047
WHEN 11 THEN 4095
WHEN 12 THEN 8191
WHEN 13 THEN 16383
WHEN 14 THEN 32767
WHEN 15 THEN 65535
WHEN 16 THEN 131071
WHEN 17 THEN 262143
-- 續增至 31: 0x7FFFFFFF
END
RETURN @iRes
END
MD5_LShift(@val, @bits):左位移(乘 2^bits)MD5_RShift(@val, @bits):右位移(除 2^bits,無號)MD5_AddUnsigned(@a, @b):無號 32-bit 加法(模 2^32)MD5_F(x,y,z):(x & y) | (~x & z)MD5_G(x,y,z):(x & z) | (y & ~z)MD5_H(x,y,z):x ^ y ^ zMD5_I(x,y,z):y ^ (x | ~z)MD5_FF/FF/GG/HH/II:四輪運算各步驟,包含非線性函數、加法、左旋轉、常數加總WITH ENCRYPTION 保護演算法邏輯