热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysqlidentitysqlserver_sqlserver有没有md5()函数(mysql支持)

SQLServer中的MD5实现方法************************************************************************

SQL Server中的MD5实现方法

/*****************************************************************************

* 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

/*****************************************************************************

* 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

/*****************************************************************************

* 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

/*****************************************************************************

* 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

/*****************************************************************************

* 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 | (~@z)))

END

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

/*****************************************************************************

* 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 & (~@z)))

END

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) | ((~@x) & @z))

END

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

/*****************************************************************************

* 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

/*****************************************************************************

* 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

/*****************************************************************************

* 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

/*****************************************************************************

* 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

/*****************************************************************************

* 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

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

BEGIN

INSERT INTO @tWordArray([Word]) VALUES(0)

SET @iCountOfWord = @iCountOfWord + 1

END

SELECT @iPosOfMess = 0, @iPosOfWord = 0, @iCountOfWord = 0

WHILE(&#64;iPosOfMess <&#64;iLenOfMess)

BEGIN

SELECT &#64;iCountOfWord &#61; &#64;iPosOfMess / 4, &#64;iPosOfWord &#61; &#64;iPosOfMess % 4

UPDATE &#64;tWordArray

SET [Word] &#61; [Word] | dbo.MD5_LShift(UNICODE(SUBSTRING(&#64;sOrigMess,&#64;iPosOfMess&#43;1,1)),&#64;iPosOfWord*8)

WHERE [ID] &#61; &#64;iCountOfWord

SET &#64;iPosOfMess &#61; &#64;iPosOfMess &#43; 1

END

SELECT &#64;iCountOfWord &#61; &#64;iPosOfMess / 4, &#64;iPosOfWord &#61; &#64;iPosOfMess % 4

UPDATE &#64;tWordArray

SET [Word] &#61; [Word] | dbo.MD5_LShift(0x80,&#64;iPosOfWord*8)

WHERE [ID] &#61; &#64;iCountOfWord

UPDATE &#64;tWordArray

SET [Word] &#61; [Word] | dbo.MD5_LShift(&#64;iLenOfMess,3)

WHERE [ID] &#61; &#64;iWordArrayLen - 2

UPDATE &#64;tWordArray

SET [Word] &#61; [Word] | dbo.MD5_RShift(&#64;iLenOfMess,29)

WHERE [ID] &#61; &#64;iWordArrayLen - 1

RETURN

END

GO

/*****************************************************************************

* Name: MD5_WordToHex

* Description: MD5_WordToHex

*****************************************************************************/

CREATE FUNCTION dbo.MD5_WordToHex(

&#64;iValue INT

)

RETURNS CHAR(8)

WITH ENCRYPTION

AS

BEGIN

DECLARE &#64;sRes VARCHAR(8)

DECLARE &#64;iTmp INT

DECLARE &#64;iCount TINYINT

SELECT &#64;sRes &#61; &#39;&#39;, &#64;iCount &#61; 0

WHILE(&#64;iCount<4)

BEGIN

SET &#64;iTmp &#61; dbo.MD5_RShift(&#64;iValue,&#64;iCount*8) & 0x000000FF

SET &#64;sRes &#61; &#64;sRes &#43; CASE &#64;iTmp / 16 WHEN 0 THEN &#39;0&#39;

WHEN 1 THEN &#39;1&#39;

WHEN 2 THEN &#39;2&#39;

WHEN 3 THEN &#39;3&#39;

WHEN 4 THEN &#39;4&#39;

WHEN 5 THEN &#39;5&#39;

WHEN 6 THEN &#39;6&#39;

WHEN 7 THEN &#39;7&#39;

WHEN 8 THEN &#39;8&#39;

WHEN 9 THEN &#39;9&#39;

WHEN 10 THEN &#39;A&#39;

WHEN 11 THEN &#39;B&#39;

WHEN 12 THEN &#39;C&#39;

WHEN 13 THEN &#39;D&#39;

WHEN 14 THEN &#39;E&#39;

WHEN 15 THEN &#39;F&#39;

ELSE &#39;&#39; END

&#43; CASE &#64;iTmp % 16 WHEN 0 THEN &#39;0&#39;

WHEN 1 THEN &#39;1&#39;

WHEN 2 THEN &#39;2&#39;

WHEN 3 THEN &#39;3&#39;

WHEN 4 THEN &#39;4&#39;

WHEN 5 THEN &#39;5&#39;

WHEN 6 THEN &#39;6&#39;

WHEN 7 THEN &#39;7&#39;

WHEN 8 THEN &#39;8&#39;

WHEN 9 THEN &#39;9&#39;

WHEN 10 THEN &#39;A&#39;

WHEN 11 THEN &#39;B&#39;

WHEN 12 THEN &#39;C&#39;

WHEN 13 THEN &#39;D&#39;

WHEN 14 THEN &#39;E&#39;

WHEN 15 THEN &#39;F&#39;

ELSE &#39;&#39; END

SET &#64;iCount &#61; &#64;iCount &#43; 1

END

RETURN(&#64;sRes)

END

GO

/*****************************************************************************

* Name: MD5

* Description: MD5

*****************************************************************************/

CREATE FUNCTION dbo.MD5(

&#64;sOrigMess NVARCHAR(4000)

)

RETURNS CHAR(32)

WITH ENCRYPTION

AS

BEGIN

--&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;

DECLARE &#64;S11 TINYINT

DECLARE &#64;S12 TINYINT

DECLARE &#64;S13 TINYINT

DECLARE &#64;S14 TINYINT

DECLARE &#64;S21 TINYINT

DECLARE &#64;S22 TINYINT

DECLARE &#64;S23 TINYINT

DECLARE &#64;S24 TINYINT

DECLARE &#64;S31 TINYINT

DECLARE &#64;S32 TINYINT

DECLARE &#64;S33 TINYINT

DECLARE &#64;S34 TINYINT

DECLARE &#64;S41 TINYINT

DECLARE &#64;S42 TINYINT

DECLARE &#64;S43 TINYINT

DECLARE &#64;S44 TINYINT

SELECT &#64;S11 &#61; 7, &#64;S12 &#61; 12, &#64;S13 &#61; 17, &#64;S14 &#61; 22

SELECT &#64;S21 &#61; 5, &#64;S22 &#61; 9, &#64;S23 &#61; 14, &#64;S24 &#61; 20

SELECT &#64;S31 &#61; 4, &#64;S32 &#61; 11, &#64;S33 &#61; 16, &#64;S34 &#61; 23

SELECT &#64;S41 &#61; 6, &#64;S42 &#61; 10, &#64;S43 &#61; 15, &#64;S44 &#61; 21

--&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;

DECLARE &#64;a INT

DECLARE &#64;b INT

DECLARE &#64;c INT

DECLARE &#64;d INT

DECLARE &#64;AA INT

DECLARE &#64;BB INT

DECLARE &#64;CC INT

DECLARE &#64;DD INT

SELECT &#64;a &#61; 0x67452301

,&#64;b &#61; 0xEFCDAB89

,&#64;c &#61; 0x98BADCFE

,&#64;d &#61; 0x10325476

--&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;

DECLARE &#64;sRes VARCHAR(32)

SET &#64;sRes &#61; &#39;&#39;

DECLARE &#64;iWordArrayLen INT

DECLARE &#64;iWordArrayCount INT

DECLARE &#64;tTmp TABLE([ID] INT, [Word] INT)

INSERT INTO &#64;tTmp SELECT * FROM dbo.MD5_ConvertToWordArray(&#64;sOrigMess)

SELECT &#64;iWordArrayCount&#61;0, &#64;iWordArrayLen &#61; COUNT(*) FROM &#64;tTmp

WHILE(&#64;iWordArrayCount <&#64;iWordArrayLen)

BEGIN

SELECT &#64;AA &#61; &#64;a, &#64;BB &#61; &#64;b, &#64;CC &#61; &#64;c, &#64;DD &#61; &#64;d

SELECT &#64;a &#61; dbo.MD5_FF(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 0), &#64;S11, 0xD76AA478)

SELECT &#64;d &#61; dbo.MD5_FF(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 1), &#64;S12, 0xE8C7B756)

SELECT &#64;c &#61; dbo.MD5_FF(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 2), &#64;S13, 0x242070DB)

SELECT &#64;b &#61; dbo.MD5_FF(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 3), &#64;S14, 0xC1BDCEEE)

SELECT &#64;a &#61; dbo.MD5_FF(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 4), &#64;S11, 0xF57C0FAF)

SELECT &#64;d &#61; dbo.MD5_FF(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 5), &#64;S12, 0x4787C62A)

SELECT &#64;c &#61; dbo.MD5_FF(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 6), &#64;S13, 0xA8304613)

SELECT &#64;b &#61; dbo.MD5_FF(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 7), &#64;S14, 0xFD469501)

SELECT &#64;a &#61; dbo.MD5_FF(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 8), &#64;S11, 0x698098D8)

SELECT &#64;d &#61; dbo.MD5_FF(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 9), &#64;S12, 0x8B44F7AF)

SELECT &#64;c &#61; dbo.MD5_FF(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 10), &#64;S13, 0xFFFF5BB1)

SELECT &#64;b &#61; dbo.MD5_FF(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 11), &#64;S14, 0x895CD7BE)

SELECT &#64;a &#61; dbo.MD5_FF(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 12), &#64;S11, 0x6B901122)

SELECT &#64;d &#61; dbo.MD5_FF(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 13), &#64;S12, 0xFD987193)

SELECT &#64;c &#61; dbo.MD5_FF(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 14), &#64;S13, 0xA679438E)

SELECT &#64;b &#61; dbo.MD5_FF(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 15), &#64;S14, 0x49B40821)

SELECT &#64;a &#61; dbo.MD5_GG(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 1), &#64;S21, 0xF61E2562)

SELECT &#64;d &#61; dbo.MD5_GG(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 6), &#64;S22, 0xC040B340)

SELECT &#64;c &#61; dbo.MD5_GG(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 11), &#64;S23, 0x265E5A51)

SELECT &#64;b &#61; dbo.MD5_GG(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 0), &#64;S24, 0xE9B6C7AA)

SELECT &#64;a &#61; dbo.MD5_GG(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 5), &#64;S21, 0xD62F105D)

SELECT &#64;d &#61; dbo.MD5_GG(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 10), &#64;S22, 0x2441453)

SELECT &#64;c &#61; dbo.MD5_GG(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 15), &#64;S23, 0xD8A1E681)

SELECT &#64;b &#61; dbo.MD5_GG(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 4), &#64;S24, 0xE7D3FBC8)

SELECT &#64;a &#61; dbo.MD5_GG(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 9), &#64;S21, 0x21E1CDE6)

SELECT &#64;d &#61; dbo.MD5_GG(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 14), &#64;S22, 0xC33707D6)

SELECT &#64;c &#61; dbo.MD5_GG(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 3), &#64;S23, 0xF4D50D87)

SELECT &#64;b &#61; dbo.MD5_GG(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 8), &#64;S24, 0x455A14ED)

SELECT &#64;a &#61; dbo.MD5_GG(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 13), &#64;S21, 0xA9E3E905)

SELECT &#64;d &#61; dbo.MD5_GG(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 2), &#64;S22, 0xFCEFA3F8)

SELECT &#64;c &#61; dbo.MD5_GG(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 7), &#64;S23, 0x676F02D9)

SELECT &#64;b &#61; dbo.MD5_GG(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 12), &#64;S24, 0x8D2A4C8A)

SELECT &#64;a &#61; dbo.MD5_HH(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 5), &#64;S31, 0xFFFA3942)

SELECT &#64;d &#61; dbo.MD5_HH(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 8), &#64;S32, 0x8771F681)

SELECT &#64;c &#61; dbo.MD5_HH(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 11), &#64;S33, 0x6D9D6122)

SELECT &#64;b &#61; dbo.MD5_HH(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 14), &#64;S34, 0xFDE5380C)

SELECT &#64;a &#61; dbo.MD5_HH(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 1), &#64;S31, 0xA4BEEA44)

SELECT &#64;d &#61; dbo.MD5_HH(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 4), &#64;S32, 0x4BDECFA9)

SELECT &#64;c &#61; dbo.MD5_HH(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 7), &#64;S33, 0xF6BB4B60)

SELECT &#64;b &#61; dbo.MD5_HH(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 10), &#64;S34, 0xBEBFBC70)

SELECT &#64;a &#61; dbo.MD5_HH(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 13), &#64;S31, 0x289B7EC6)

SELECT &#64;d &#61; dbo.MD5_HH(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 0), &#64;S32, 0xEAA127FA)

SELECT &#64;c &#61; dbo.MD5_HH(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 3), &#64;S33, 0xD4EF3085)

SELECT &#64;b &#61; dbo.MD5_HH(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 6), &#64;S34, 0x4881D05)

SELECT &#64;a &#61; dbo.MD5_HH(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 9), &#64;S31, 0xD9D4D039)

SELECT &#64;d &#61; dbo.MD5_HH(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 12), &#64;S32, 0xE6DB99E5)

SELECT &#64;c &#61; dbo.MD5_HH(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 15), &#64;S33, 0x1FA27CF8)

SELECT &#64;b &#61; dbo.MD5_HH(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 2), &#64;S34, 0xC4AC5665)

SELECT &#64;a &#61; dbo.MD5_II(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 0), &#64;S41, 0xF4292244)

SELECT &#64;d &#61; dbo.MD5_II(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 7), &#64;S42, 0x432AFF97)

SELECT &#64;c &#61; dbo.MD5_II(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 14), &#64;S43, 0xAB9423A7)

SELECT &#64;b &#61; dbo.MD5_II(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 5), &#64;S44, 0xFC93A039)

SELECT &#64;a &#61; dbo.MD5_II(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 12), &#64;S41, 0x655B59C3)

SELECT &#64;d &#61; dbo.MD5_II(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 3), &#64;S42, 0x8F0CCC92)

SELECT &#64;c &#61; dbo.MD5_II(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 10), &#64;S43, 0xFFEFF47D)

SELECT &#64;b &#61; dbo.MD5_II(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 1), &#64;S44, 0x85845DD1)

SELECT &#64;a &#61; dbo.MD5_II(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 8), &#64;S41, 0x6FA87E4F)

SELECT &#64;d &#61; dbo.MD5_II(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 15), &#64;S42, 0xFE2CE6E0)

SELECT &#64;c &#61; dbo.MD5_II(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 6), &#64;S43, 0xA3014314)

SELECT &#64;b &#61; dbo.MD5_II(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 13), &#64;S44, 0x4E0811A1)

SELECT &#64;a &#61; dbo.MD5_II(&#64;a, &#64;b, &#64;c, &#64;d, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 4), &#64;S41, 0xF7537E82)

SELECT &#64;d &#61; dbo.MD5_II(&#64;d, &#64;a, &#64;b, &#64;c, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 11), &#64;S42, 0xBD3AF235)

SELECT &#64;c &#61; dbo.MD5_II(&#64;c, &#64;d, &#64;a, &#64;b, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 2), &#64;S43, 0x2AD7D2BB)

SELECT &#64;b &#61; dbo.MD5_II(&#64;b, &#64;c, &#64;d, &#64;a, (SELECT [Word] FROM &#64;tTmp WHERE [ID] &#61; &#64;iWordArrayCount &#43; 9), &#64;S44, 0xEB86D391)

SET &#64;a &#61; dbo.MD5_AddUnsigned(&#64;a, &#64;AA)

SET &#64;b &#61; dbo.MD5_AddUnsigned(&#64;b, &#64;BB)

SET &#64;c &#61; dbo.MD5_AddUnsigned(&#64;c, &#64;CC)

SET &#64;d &#61; dbo.MD5_AddUnsigned(&#64;d, &#64;DD)

SET &#64;iWordArrayCount &#61; &#64;iWordArrayCount &#43; 16

END

SET &#64;sRes &#61; dbo.MD5_WordToHex(&#64;a) &#43; dbo.MD5_WordToHex(&#64;b) &#43; dbo.MD5_WordToHex(&#64;c) &#43; dbo.MD5_WordToHex(&#64;d)

SET &#64;sRes &#61; LOWER(&#64;sRes)

RETURN(&#64;sRes)

END

GO



推荐阅读
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Oracle seg,V$TEMPSEG_USAGE与Oracle排序的关系及使用方法
    本文介绍了Oracle seg,V$TEMPSEG_USAGE与Oracle排序之间的关系,V$TEMPSEG_USAGE是V_$SORT_USAGE的同义词,通过查询dba_objects和dba_synonyms视图可以了解到它们的详细信息。同时,还探讨了V$TEMPSEG_USAGE的使用方法。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
author-avatar
AK47GXF
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有