MD5 演算法需大量位元運算,T-SQL 缺乏原生位移、旋轉、無號加法,本文逐一實作所需輔助函數,為核心雜湊函數鋪路。
MD5_m_OnBits(@i TINYINT):回傳低 @i 位全 1 的遮罩(0~30 位)。MD5_m_2Power(@i TINYINT):回傳 2^@i(0~30 位)。MD5_LShift(@iValue INT, @iShiftBits TINYINT):邏輯左移,轉 BINARY(8) 乘 2^shift,再取低 32 bits。MD5_RShift(@iValue INT, @iShiftBits TINYINT):邏輯右移,轉 BINARY(8) 除 2^shift,取低 32 bits。MD5_RotateLeft(@iValue INT, @iShiftBits TINYINT):循環左移 = (左移) | (右移 32-shift)。MD5_AddUnsigned(@iX INT, @iY INT):轉 BIGINT 相加,取低 32 bits。MD5_F/G/H/I:四輪非線性函數(位元 AND/OR/XOR/NOT 組合)。MD5_FF/GG/HH/II:各輪步驟封裝,參數 (a,b,c,d,x,s,ac),內含 AddUnsigned、RotateLeft、常數加法。所有函數均加 WITH ENCRYPTION,原始碼完整可直接部署。下篇將組合成完整 MD5 雜湊函數。