½­Î÷¹ã¸æÍø

±êÌâ: MD5Ëã·¨µÄT-SQLʵÏÖ(FOR SQL2000)£¨Ò»£© [´òÓ¡±¾Ò³]

×÷Õß: juicy0592    ʱ¼ä: 2009-1-22 16:54
±êÌâ: MD5Ëã·¨µÄT-SQLʵÏÖ(FOR SQL2000)£¨Ò»£©
¡¡¡¡/***************************************************************************** ¡¡¡¡* Name: T-SQL MD5Ë㷨ʵÏÖ ¡¡¡¡* Author:¡¡Rambo Qian ¡¡¡¡* Create Date: 2003-04-10 ¡¡¡¡* Last Modified by: Rambo Qian ¡¡¡¡* Last Update Date: 2003-04-16 ¡¡¡¡* Version: V1.0.00 ¡¡¡¡*****************************************************************************/ ¡¡¡¡GO ¡¡¡¡ ¡¡¡¡IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_m_OnBits]') AND xtype IN(N'FN', N'IF', N'TF')) ¡¡¡¡¡¡¡¡DROP FUNCTION [dbo].[MD5_m_OnBits] ¡¡¡¡GO ¡¡¡¡/***************************************************************************** ¡¡¡¡* Name: MD5_m_OnBits ¡¡¡¡* Description: ³£Êý×é ¡¡¡¡*****************************************************************************/ ¡¡¡¡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¡¡¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000000000001 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 1¡¡THEN 3¡¡¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000000000011 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 2¡¡THEN 7¡¡¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000000000111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 3¡¡THEN 15¡¡¡¡¡¡¡¡¡¡ -- 00000000000000000000000000001111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 4¡¡THEN 31¡¡¡¡¡¡¡¡¡¡ -- 00000000000000000000000000011111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 5¡¡THEN 63¡¡¡¡¡¡¡¡¡¡ -- 00000000000000000000000000111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 6¡¡THEN 127¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000001111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 7¡¡THEN 255¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000011111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 8¡¡THEN 511¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 9¡¡THEN 1023¡¡¡¡¡¡¡¡ -- 00000000000000000000001111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 10 THEN 2047¡¡¡¡¡¡¡¡ -- 00000000000000000000011111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 11 THEN 4095¡¡¡¡¡¡¡¡ -- 00000000000000000000111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 12 THEN 8191¡¡¡¡¡¡¡¡ -- 00000000000000000001111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 13 THEN 16383¡¡¡¡¡¡¡¡-- 00000000000000000011111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 14 THEN 32767¡¡¡¡¡¡¡¡-- 00000000000000000111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 15 THEN 65535¡¡¡¡¡¡¡¡-- 00000000000000001111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 16 THEN 131071¡¡¡¡¡¡ -- 00000000000000011111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 17 THEN 262143¡¡¡¡¡¡ -- 00000000000000111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 18 THEN 524287¡¡¡¡¡¡ -- 00000000000001111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 19 THEN 1048575¡¡¡¡¡¡-- 00000000000011111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 20 THEN 2097151¡¡¡¡¡¡-- 00000000000111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 21 THEN 4194303¡¡¡¡¡¡-- 00000000001111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 22 THEN 8388607¡¡¡¡¡¡-- 00000000011111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 23 THEN 16777215¡¡¡¡ -- 00000000111111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 24 THEN 33554431¡¡¡¡ -- 00000001111111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 25 THEN 67108863¡¡¡¡ -- 00000011111111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 26 THEN 134217727¡¡¡¡-- 00000111111111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 27 THEN 268435455¡¡¡¡-- 00001111111111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 28 THEN 536870911¡¡¡¡-- 00011111111111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 29 THEN 1073741823¡¡ -- 00111111111111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 30 THEN 2147483647¡¡ -- 01111111111111111111111111111111 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ELSE 0 ¡¡¡¡¡¡¡¡¡¡¡¡END ¡¡¡¡¡¡¡¡RETURN(@iRes) ¡¡¡¡END ¡¡¡¡GO ¡¡¡¡ ¡¡¡¡IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_m_2Power]') AND xtype IN(N'FN', N'IF', N'TF')) ¡¡¡¡¡¡¡¡DROP FUNCTION [dbo].[MD5_m_2Power] ¡¡¡¡GO ¡¡¡¡/***************************************************************************** ¡¡¡¡* Name: MD5_m_2Power ¡¡¡¡* Description: ³£Êý×é ¡¡¡¡*****************************************************************************/ ¡¡¡¡CREATE FUNCTION dbo.MD5_m_2Power( ¡¡¡¡¡¡¡¡@i¡¡¡¡TINYINT ¡¡¡¡) ¡¡¡¡RETURNS INT ¡¡¡¡WITH ENCRYPTION ¡¡¡¡AS ¡¡¡¡BEGIN ¡¡¡¡¡¡¡¡DECLARE @iRes¡¡¡¡INT ¡¡¡¡¡¡¡¡SELECT @iRes = ¡¡¡¡¡¡¡¡¡¡¡¡CASE @i ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 0¡¡THEN 1¡¡¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000000000001 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 1¡¡THEN 2¡¡¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000000000010 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 2¡¡THEN 4¡¡¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000000000100 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 3¡¡THEN 8¡¡¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000000001000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 4¡¡THEN 16¡¡¡¡¡¡¡¡¡¡ -- 00000000000000000000000000010000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 5¡¡THEN 32¡¡¡¡¡¡¡¡¡¡ -- 00000000000000000000000000100000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 6¡¡THEN 64¡¡¡¡¡¡¡¡¡¡ -- 00000000000000000000000001000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 7¡¡THEN 128¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000010000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 8¡¡THEN 256¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000000100000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 9¡¡THEN 512¡¡¡¡¡¡¡¡¡¡-- 00000000000000000000001000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 10 THEN 1024¡¡¡¡¡¡¡¡ -- 00000000000000000000010000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 11 THEN 2048¡¡¡¡¡¡¡¡ -- 00000000000000000000100000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 12 THEN 4096¡¡¡¡¡¡¡¡ -- 00000000000000000001000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 13 THEN 8192¡¡¡¡¡¡¡¡ -- 00000000000000000010000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 14 THEN 16384¡¡¡¡¡¡¡¡-- 00000000000000000100000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 15 THEN 32768¡¡¡¡¡¡¡¡-- 00000000000000001000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 16 THEN 65536¡¡¡¡¡¡¡¡-- 00000000000000010000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 17 THEN 131072¡¡¡¡¡¡ -- 00000000000000100000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 18 THEN 262144¡¡¡¡¡¡ -- 00000000000001000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 19 THEN 524288¡¡¡¡¡¡ -- 00000000000010000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 20 THEN 1048576¡¡¡¡¡¡-- 00000000000100000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 21 THEN 2097152¡¡¡¡¡¡-- 00000000001000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 22 THEN 4194304¡¡¡¡¡¡-- 00000000010000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 23 THEN 8388608¡¡¡¡¡¡-- 00000000100000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 24 THEN 16777216¡¡¡¡ -- 00000001000000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 25 THEN 33554432¡¡¡¡ -- 00000010000000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 26 THEN 67108864¡¡¡¡ -- 00000100000000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 27 THEN 134217728¡¡¡¡-- 00001000000000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 28 THEN 268435456¡¡¡¡-- 00010000000000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 29 THEN 536870912¡¡¡¡-- 00100000000000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡WHEN 30 THEN 1073741824¡¡ -- 01000000000000000000000000000000 ¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ELSE 0 ¡¡¡¡¡¡¡¡¡¡¡¡END ¡¡¡¡¡¡¡¡RETURN(@iRes) ¡¡¡¡END ¡¡¡¡GO ¡¡¡¡ ¡¡¡¡IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_LShift]') AND xtype IN(N'FN', N'IF', N'TF')) ¡¡¡¡¡¡¡¡DROP FUNCTION [dbo].[MD5_LShift] ¡¡¡¡GO ¡¡¡¡/***************************************************************************** ¡¡¡¡* Name: MD5_LShift ¡¡¡¡* Description: MD5_LShift ¡¡¡¡*****************************************************************************/ ¡¡¡¡CREATE FUNCTION dbo.MD5_LShift( ¡¡¡¡¡¡¡¡ @iValue¡¡¡¡¡¡¡¡INT ¡¡¡¡¡¡¡¡,@iShiftBits¡¡¡¡TINYINT ¡¡¡¡) ¡¡¡¡RETURNS INT ¡¡¡¡WITH ENCRYPTION ¡¡¡¡AS ¡¡¡¡BEGIN ¡¡¡¡¡¡¡¡DECLARE @iRes¡¡¡¡BIGINT ¡¡¡¡¡¡¡¡SET @iRes = CAST(@iValue AS BINARY(8)) ¡¡¡¡¡¡¡¡SET @iRes = @iRes * dbo.MD5_m_2Power(@iShiftBits) ¡¡¡¡¡¡¡¡RETURN(CAST(@iRes & 0x00000000FFFFFFFF AS BINARY(4))) ¡¡¡¡END ¡¡¡¡GO ¡¡¡¡ ¡¡¡¡IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_RShift]') AND xtype IN(N'FN', N'IF', N'TF')) ¡¡¡¡¡¡¡¡DROP FUNCTION [dbo].[MD5 <




»¶Ó­¹âÁÙ ½­Î÷¹ã¸æÍø (http://bbs.jxadw.com/) Powered by Discuz! X3.2