代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
MSSQL
】
T-SQL MD5算法实现
作者:
Dezai.CN
/ 发布于
2011/8/11
/
1074
<div>/***************************************************************************** * 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_RShift] GO /***************************************************************************** * Name: MD5_RShift * Description: MD5_RShift *****************************************************************************/ CREATE FUNCTION dbo.MD5_RShift( @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_RotateLeft]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_RotateLeft] GO /***************************************************************************** * Name: MD5_RotateLeft * Description: MD5_RotateLeft *****************************************************************************/ CREATE FUNCTION dbo.MD5_RotateLeft( @iValue INT ,@iShiftBits TINYINT ) RETURNS INT WITH ENCRYPTION AS BEGIN RETURN(dbo.MD5_LShift(@iValue, @iShiftBits) | dbo.MD5_RShift(@iValue, (32 - @iShiftBits))) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_AddUnsigned]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_AddUnsigned] GO /***************************************************************************** * Name: MD5_AddUnsigned * Description: MD5_AddUnsigned *****************************************************************************/ CREATE FUNCTION dbo.MD5_AddUnsigned( @iX INT ,@iY INT ) RETURNS INT WITH ENCRYPTION AS BEGIN DECLARE @iRes BIGINT SET @iRes = CAST(CAST(@iX AS BINARY(8)) AS BIGINT) + CAST(CAST(@iY AS BINARY(8)) AS BIGINT) RETURN(CAST(@iRes & 0x00000000FFFFFFFF AS BINARY(4))) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_F]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_F] GO /***************************************************************************** * Name: MD5_F * Description: MD5_F *****************************************************************************/ CREATE FUNCTION dbo.MD5_F( @x INT ,@y INT ,@z INT ) RETURNS INT WITH ENCRYPTION AS BEGIN RETURN((@x & @y) | ((<a href="mailto:~@x"><font color="#336699">~@x</font></a>) & @z)) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_G]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_G] GO /***************************************************************************** * Name: MD5_G * Description: MD5_G *****************************************************************************/ CREATE FUNCTION dbo.MD5_G( @x INT ,@y INT ,@z INT ) RETURNS INT WITH ENCRYPTION AS BEGIN RETURN((@x & @z) | (@y & (<a href="mailto:~@z"><font color="#336699">~@z</font></a>))) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_H]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_H] GO /***************************************************************************** * Name: MD5_H * Description: MD5_H *****************************************************************************/ CREATE FUNCTION dbo.MD5_H( @x INT ,@y INT ,@z INT ) RETURNS INT WITH ENCRYPTION AS BEGIN RETURN(@x ^ @y ^ @z) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_I]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_I] GO /***************************************************************************** * Name: MD5_I * Description: MD5_I *****************************************************************************/ CREATE FUNCTION dbo.MD5_I( @x INT ,@y INT ,@z INT ) RETURNS INT WITH ENCRYPTION AS BEGIN RETURN(@y ^ (@x | (<a href="mailto:~@z"><font color="#336699">~@z</font></a>))) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_FF]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_FF] GO /***************************************************************************** * Name: MD5_FF * Description: MD5_FF *****************************************************************************/ CREATE FUNCTION dbo.MD5_FF( @a INT ,@b INT ,@c INT ,@d INT ,@x INT ,@s INT ,@ac INT ) RETURNS INT WITH ENCRYPTION AS BEGIN SET @a = dbo.MD5_AddUnsigned(@a, dbo.MD5_AddUnsigned(dbo.MD5_AddUnsigned(dbo.MD5_F(@b, @c, @d), @x), @ac)) SET @a = dbo.MD5_RotateLeft(@a, @s) SET @a = dbo.MD5_AddUnsigned(@a, @b) RETURN(@a) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_GG]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_GG] GO /***************************************************************************** * Name: MD5_GG * Description: MD5_GG *****************************************************************************/ CREATE FUNCTION dbo.MD5_GG( @a INT ,@b INT ,@c INT ,@d INT ,@x INT ,@s INT ,@ac INT ) RETURNS INT WITH ENCRYPTION AS BEGIN SET @a = dbo.MD5_AddUnsigned(@a, dbo.MD5_AddUnsigned(dbo.MD5_AddUnsigned(dbo.MD5_G(@b, @c, @d), @x), @ac)) SET @a = dbo.MD5_RotateLeft(@a, @s) SET @a = dbo.MD5_AddUnsigned(@a, @b) RETURN(@a) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_HH]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_HH] GO /***************************************************************************** * Name: MD5_HH * Description: MD5_HH *****************************************************************************/ CREATE FUNCTION dbo.MD5_HH( @a INT ,@b INT ,@c INT ,@d INT ,@x INT ,@s INT ,@ac INT ) RETURNS INT WITH ENCRYPTION AS BEGIN SET @a = dbo.MD5_AddUnsigned(@a, dbo.MD5_AddUnsigned(dbo.MD5_AddUnsigned(dbo.MD5_H(@b, @c, @d), @x), @ac)) SET @a = dbo.MD5_RotateLeft(@a, @s) SET @a = dbo.MD5_AddUnsigned(@a, @b) RETURN(@a) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_II]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_II] GO /***************************************************************************** * Name: MD5_II * Description: MD5_II *****************************************************************************/ CREATE FUNCTION dbo.MD5_II( @a INT ,@b INT ,@c INT ,@d INT ,@x INT ,@s INT ,@ac INT ) RETURNS INT WITH ENCRYPTION AS BEGIN SET @a = dbo.MD5_AddUnsigned(@a, dbo.MD5_AddUnsigned(dbo.MD5_AddUnsigned(dbo.MD5_I(@b, @c, @d), @x), @ac)) SET @a = dbo.MD5_RotateLeft(@a, @s) SET @a = dbo.MD5_AddUnsigned(@a, @b) RETURN(@a) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_ConvertToWordArray]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_ConvertToWordArray] GO /***************************************************************************** * Name: MD5_ConvertToWordArray * Description: MD5_ConvertToWordArray *****************************************************************************/ CREATE FUNCTION dbo.MD5_ConvertToWordArray( @sOrigMess VARCHAR(8000) = '' ) RETURNS @tWordArray TABLE([ID] INT IDENTITY(0,1),[Word] INT) WITH ENCRYPTION AS BEGIN IF @sOrigMess IS NULL SET @sOrigMess = '' DECLARE @iLenOfMess INT DECLARE @iWordArrayLen INT DECLARE @iPosOfWord INT DECLARE @iPosOfMess INT DECLARE @iCountOfWord INT SET @iLenOfMess = LEN(@sOrigMess) SET @iWordArrayLen = ((@iLenOfMess + 8)/64 + 1) * 16 SET @iCountOfWord = 0 WHILE(@iCountOfWord<@iWordArrayLen) BEGIN INSERT INTO @tWordArray([Word]) VALUES(0) SET @iCountOfWord = @iCountOfWord + 1 END SELECT @iPosOfMess = 0, @iPosOfWord = 0, @iCountOfWord = 0 WHILE(@iPosOfMess < @iLenOfMess) BEGIN SELECT @iCountOfWord = @iPosOfMess / 4, @iPosOfWord = @iPosOfMess % 4 UPDATE @tWordArray SET [Word] = [Word] | dbo.MD5_LShift(UNICODE(SUBSTRING(@sOrigMess,@iPosOfMess+1,1)),@iPosOfWord*8) WHERE [ID] = @iCountOfWord SET @iPosOfMess = @iPosOfMess + 1 END SELECT @iCountOfWord = @iPosOfMess / 4, @iPosOfWord = @iPosOfMess % 4 UPDATE @tWordArray SET [Word] = [Word] | dbo.MD5_LShift(0x80,@iPosOfWord*8) WHERE [ID] = @iCountOfWord UPDATE @tWordArray SET [Word] = [Word] | dbo.MD5_LShift(@iLenOfMess,3) WHERE [ID] = @iWordArrayLen - 2 UPDATE @tWordArray SET [Word] = [Word] | dbo.MD5_RShift(@iLenOfMess,29) WHERE [ID] = @iWordArrayLen - 1 RETURN END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5_WordToHex]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5_WordToHex] GO /***************************************************************************** * Name: MD5_WordToHex * Description: MD5_WordToHex *****************************************************************************/ CREATE FUNCTION dbo.MD5_WordToHex( @iValue INT ) RETURNS CHAR(8) WITH ENCRYPTION AS BEGIN DECLARE @sRes VARCHAR(8) DECLARE @iTmp INT DECLARE @iCount TINYINT SELECT @sRes = '', @iCount = 0 WHILE(@iCount<4) BEGIN SET @iTmp = dbo.MD5_RShift(@iValue,@iCount*8) & 0x000000FF SET @sRes = @sRes + CASE @iTmp / 16 WHEN 0 THEN '0' WHEN 1 THEN '1' WHEN 2 THEN '2' WHEN 3 THEN '3' WHEN 4 THEN '4' WHEN 5 THEN '5' WHEN 6 THEN '6' WHEN 7 THEN '7' WHEN 8 THEN '8' WHEN 9 THEN '9' WHEN 10 THEN 'A' WHEN 11 THEN 'B' WHEN 12 THEN 'C' WHEN 13 THEN 'D' WHEN 14 THEN 'E' WHEN 15 THEN 'F' ELSE '' END + CASE @iTmp % 16 WHEN 0 THEN '0' WHEN 1 THEN '1' WHEN 2 THEN '2' WHEN 3 THEN '3' WHEN 4 THEN '4' WHEN 5 THEN '5' WHEN 6 THEN '6' WHEN 7 THEN '7' WHEN 8 THEN '8' WHEN 9 THEN '9' WHEN 10 THEN 'A' WHEN 11 THEN 'B' WHEN 12 THEN 'C' WHEN 13 THEN 'D' WHEN 14 THEN 'E' WHEN 15 THEN 'F' ELSE '' END SET @iCount = @iCount + 1 END RETURN(@sRes) END GO IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[MD5]') AND xtype IN(N'FN', N'IF', N'TF')) DROP FUNCTION [dbo].[MD5] GO /***************************************************************************** * Name: MD5 * Description: MD5 *****************************************************************************/ CREATE FUNCTION dbo.MD5( @sOrigMess NVARCHAR(4000) ) RETURNS CHAR(32) WITH ENCRYPTION AS BEGIN --==================================== DECLARE @S11 TINYINT DECLARE @S12 TINYINT DECLARE @S13 TINYINT DECLARE @S14 TINYINT DECLARE @S21 TINYINT DECLARE @S22 TINYINT DECLARE @S23 TINYINT DECLARE @S24 TINYINT DECLARE @S31 TINYINT DECLARE @S32 TINYINT DECLARE @S33 TINYINT DECLARE @S34 TINYINT DECLARE @S41 TINYINT DECLARE @S42 TINYINT DECLARE @S43 TINYINT DECLARE @S44 TINYINT SELECT @S11 = 7, @S12 = 12, @S13 = 17, @S14 = 22 SELECT @S21 = 5, @S22 = 9, @S23 = 14, @S24 = 20 SELECT @S31 = 4, @S32 = 11, @S33 = 16, @S34 = 23 SELECT @S41 = 6, @S42 = 10, @S43 = 15, @S44 = 21 --==================================== DECLARE @a INT DECLARE @b INT DECLARE @c INT DECLARE @d INT DECLARE @AA INT DECLARE @BB INT DECLARE @CC INT DECLARE @DD INT SELECT @a = 0x67452301 ,@b = 0xEFCDAB89 ,@c = 0x98BADCFE ,@d = 0x10325476 --==================================== DECLARE @sRes VARCHAR(32) SET @sRes = '' DECLARE @iWordArrayLen INT DECLARE @iWordArrayCount INT DECLARE @tTmp TABLE([ID] INT, [Word] INT) INSERT INTO @tTmp SELECT * FROM dbo.MD5_ConvertToWordArray(@sOrigMess) SELECT @iWordArrayCount=0, @iWordArrayLen = COUNT(*) FROM @tTmp WHILE(@iWordArrayCount < @iWordArrayLen) BEGIN SELECT @AA = @a, @BB = @b, @CC = @c, @DD = @d SELECT @a = dbo.MD5_FF(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 0), @S11, 0xD76AA478) SELECT @d = dbo.MD5_FF(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 1), @S12, 0xE8C7B756) SELECT @c = dbo.MD5_FF(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 2), @S13, 0x242070DB) SELECT @b = dbo.MD5_FF(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 3), @S14, 0xC1BDCEEE) SELECT @a = dbo.MD5_FF(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 4), @S11, 0xF57C0FAF) SELECT @d = dbo.MD5_FF(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 5), @S12, 0x4787C62A) SELECT @c = dbo.MD5_FF(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 6), @S13, 0xA8304613) SELECT @b = dbo.MD5_FF(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 7), @S14, 0xFD469501) SELECT @a = dbo.MD5_FF(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 8), @S11, 0x698098D8) SELECT @d = dbo.MD5_FF(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 9), @S12, 0x8B44F7AF) SELECT @c = dbo.MD5_FF(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 10), @S13, 0xFFFF5BB1) SELECT @b = dbo.MD5_FF(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 11), @S14, 0x895CD7BE) SELECT @a = dbo.MD5_FF(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 12), @S11, 0x6B901122) SELECT @d = dbo.MD5_FF(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 13), @S12, 0xFD987193) SELECT @c = dbo.MD5_FF(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 14), @S13, 0xA679438E) SELECT @b = dbo.MD5_FF(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 15), @S14, 0x49B40821) SELECT @a = dbo.MD5_GG(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 1), @S21, 0xF61E2562) SELECT @d = dbo.MD5_GG(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 6), @S22, 0xC040B340) SELECT @c = dbo.MD5_GG(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 11), @S23, 0x265E5A51) SELECT @b = dbo.MD5_GG(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 0), @S24, 0xE9B6C7AA) SELECT @a = dbo.MD5_GG(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 5), @S21, 0xD62F105D) SELECT @d = dbo.MD5_GG(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 10), @S22, 0x2441453) SELECT @c = dbo.MD5_GG(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 15), @S23, 0xD8A1E681) SELECT @b = dbo.MD5_GG(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 4), @S24, 0xE7D3FBC8) SELECT @a = dbo.MD5_GG(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 9), @S21, 0x21E1CDE6) SELECT @d = dbo.MD5_GG(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 14), @S22, 0xC33707D6) SELECT @c = dbo.MD5_GG(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 3), @S23, 0xF4D50D87) SELECT @b = dbo.MD5_GG(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 8), @S24, 0x455A14ED) SELECT @a = dbo.MD5_GG(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 13), @S21, 0xA9E3E905) SELECT @d = dbo.MD5_GG(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 2), @S22, 0xFCEFA3F8) SELECT @c = dbo.MD5_GG(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 7), @S23, 0x676F02D9) SELECT @b = dbo.MD5_GG(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 12), @S24, 0x8D2A4C8A) SELECT @a = dbo.MD5_HH(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 5), @S31, 0xFFFA3942) SELECT @d = dbo.MD5_HH(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 8), @S32, 0x8771F681) SELECT @c = dbo.MD5_HH(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 11), @S33, 0x6D9D6122) SELECT @b = dbo.MD5_HH(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 14), @S34, 0xFDE5380C) SELECT @a = dbo.MD5_HH(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 1), @S31, 0xA4BEEA44) SELECT @d = dbo.MD5_HH(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 4), @S32, 0x4BDECFA9) SELECT @c = dbo.MD5_HH(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 7), @S33, 0xF6BB4B60) SELECT @b = dbo.MD5_HH(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 10), @S34, 0xBEBFBC70) SELECT @a = dbo.MD5_HH(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 13), @S31, 0x289B7EC6) SELECT @d = dbo.MD5_HH(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 0), @S32, 0xEAA127FA) SELECT @c = dbo.MD5_HH(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 3), @S33, 0xD4EF3085) SELECT @b = dbo.MD5_HH(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 6), @S34, 0x4881D05) SELECT @a = dbo.MD5_HH(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 9), @S31, 0xD9D4D039) SELECT @d = dbo.MD5_HH(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 12), @S32, 0xE6DB99E5) SELECT @c = dbo.MD5_HH(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 15), @S33, 0x1FA27CF8) SELECT @b = dbo.MD5_HH(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 2), @S34, 0xC4AC5665) SELECT @a = dbo.MD5_II(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 0), @S41, 0xF4292244) SELECT @d = dbo.MD5_II(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 7), @S42, 0x432AFF97) SELECT @c = dbo.MD5_II(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 14), @S43, 0xAB9423A7) SELECT @b = dbo.MD5_II(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 5), @S44, 0xFC93A039) SELECT @a = dbo.MD5_II(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 12), @S41, 0x655B59C3) SELECT @d = dbo.MD5_II(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 3), @S42, 0x8F0CCC92) SELECT @c = dbo.MD5_II(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 10), @S43, 0xFFEFF47D) SELECT @b = dbo.MD5_II(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 1), @S44, 0x85845DD1) SELECT @a = dbo.MD5_II(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 8), @S41, 0x6FA87E4F) SELECT @d = dbo.MD5_II(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 15), @S42, 0xFE2CE6E0) SELECT @c = dbo.MD5_II(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 6), @S43, 0xA3014314) SELECT @b = dbo.MD5_II(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 13), @S44, 0x4E0811A1) SELECT @a = dbo.MD5_II(@a, @b, @c, @d, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 4), @S41, 0xF7537E82) SELECT @d = dbo.MD5_II(@d, @a, @b, @c, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 11), @S42, 0xBD3AF235) SELECT @c = dbo.MD5_II(@c, @d, @a, @b, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 2), @S43, 0x2AD7D2BB) SELECT @b = dbo.MD5_II(@b, @c, @d, @a, (SELECT [Word] FROM @tTmp WHERE [ID] = @iWordArrayCount + 9), @S44, 0xEB86D391) SET @a = dbo.MD5_AddUnsigned(@a, @AA) SET @b = dbo.MD5_AddUnsigned(@b, @BB) SET @c = dbo.MD5_AddUnsigned(@c, @CC) SET @d = dbo.MD5_AddUnsigned(@d, @DD) SET @iWordArrayCount = @iWordArrayCount + 16 END SET @sRes = dbo.MD5_WordToHex(@a) + dbo.MD5_WordToHex(@b) + dbo.MD5_WordToHex(@c) + dbo.MD5_WordToHex(@d) SET @sRes = LOWER(@sRes) RETURN(@sRes) END GO --Test set nocount on select dbo.MD5('') as 'MD5('''')' union select 'd41d8cd98f00b204e9800998ecf8427e' select dbo.MD5('a') as 'MD5(''a'')' union select '0cc175b9c0f1b6a831c399e269772661' select dbo.MD5('abc') as 'MD5(''abc'')' union select '900150983cd24fb0d6963f7d28e17f72' select dbo.MD5('message digest') as 'MD5(''message digest'')' union select 'f96b697d7cb7938d525a2f31aaf161d0' select dbo.MD5('abcdefghijklmnopqrstuvwxyz') as 'MD5(''abcdefghijklmnopqrstuvwxyz'')' union select 'c3fcd3d76192e4007dfb496cca67e13b' select dbo.MD5('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') as 'MD5(''ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'')' union select 'd174ab98d277d9f5a5611c2c9f419d9f' select dbo.MD5('12345678901234567890123456789012345678901234567890123456789012345678901234567890') as 'MD5(''12345678901234567890123456789012345678901234567890123456789012345678901234567890'')' union select '57edf4a22be3c955ac49da2e2107b67a' select dbo.MD5('我') as 'MD5(''我'')' union select 'a31d0f25367ebe046897f8a939ca4a9f' </div>
试试其它关键字
MD5算法
同语言下
.
SQL查询 多列合并成一行用逗号隔开
.
查看存储过程修改时间,最近执行时间
.
设置手动批量删除数据库相关进程
.
获取某个表中特定字段的所有字符串形式
.
SQL 如何去除重复的字符串
.
怎么去掉一个字段中的重复数据
.
String 去除空格 回车 换行 水平制表符
.
SQL查询和替换含有回车,空格,TAB
.
SQL SERVER 查询每日新增用户数量、次留数量
.
判断两个字符串是否存在相同的内容
可能有用的
.
C#实现的html内容截取
.
List 切割成几份 工具类
.
SQL查询 多列合并成一行用逗号隔开
.
一行一行读取txt的内容
.
C#动态修改文件夹名称(FSO实现,不移动文件)
.
c# 移动文件或文件夹
.
c#图片添加水印
.
Java PDF转换成图片并输出给前台展示
.
网站后台修改图片尺寸代码
.
处理大图片在缩略图时的展示
Dezai.CN
贡献的其它代码
(
4037
)
.
多线程Socket服务器模块
.
生成随机密码
.
清除浮动样式
.
弹出窗口居中
.
抓取url的函数
.
使用base HTTP验证
.
div模拟iframe嵌入效果
.
通过header转向的方法
.
Session操作类
.
执行sqlite输入插入操作后获得自动编号的ID
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3