文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>MD5算法的T-SQL实现(FORSQL2000)(一)

MD5算法的T-SQL实现(FORSQL2000)(一)

时间:2010-09-10  来源:缘分星空

/*****************************************************************************
* 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) | ((~@x) & @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 & (~@z)))
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 | (~@z)))
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
GOchin a i t p oe er . co mpoRQk



christmas light display videohonda motorcycle saddlebaglui vuttonladies winter coatbeech house hotel yorkwomen coats and jacketsblack suede jacketcruise ship brokerspaintings on black canvascarnival hawaiian cruiseheys luggage on salecheap caribean cruisered leather backpackscanvas half chapsnaples fl hotelswholesale beach items59032Gucci-114900-04nkotb ticket pricesmotorcycle duffle bagsvacation homes sale oregon coastmaking decorative wreathsalaskan cruises familychildrens canvas printsfashion jewelry trends 2009shenzhen ding lincruise deals aprilpicasso paintings pricejackson pollock drawingsselfish asia cruisesmall sectional couchesscreen art posters incsewing suppliescarry on luggage dimensions unitedleatherworking supplies wowlost world last episodecanvas fine arts galleryfamily beach house vacation rentalcheap alaskan cruisewaterproof winter work glovesmagic cruise 2010screensavers for freeeurope vacation specialsluggage leather trimquarterdeck beachside villasbest screensaverleather sofa factorypre inked vs self inking stampshouse rental listingsleather luggage tagmaxximum new york handbagstying scarves cowl styleleather lace seabrookgucci-162962-02black sequin bags70 show hyde quotestotes saleroyal caribbean travel insurancecruise in mediterraneaninterlocking initialsGUCCI-220143-BCC8G-5217handmade bagsspring seasonkids auditionssamsonite spinnerdiscount wicker furniturevacations to go cruise dealsbuy leather beltsautomotive upholstery cleaningladies duffle bagsdisney world excursionswomens travel backpackscheap couples cruisesatin vestspersonalized pens weddinggucci-185566free crafts for kidscruises in october 2009carnival conquest reviewcruise lines offersrei luggagecarnival cruise new shipGucci-203693-01buy prada bagfour day cruiseclean jokes riddlesfake fur bagsitalian leather handbags wholesalebahamas beachfront rentalsdavids bridallouise handbagsvacation homes newport oregondesigner jeans cheapportrait painter artistccm winter jackettumi laptop bagsdassault miragelarge canvas paintingsarmani swimsuitsbuying pursesfendi fashion designerleather area ruggibson equipment rentalsunset vacation rentalsdancing auditionwholesale designer purses and handbagsGucci-203516cheap hawaii cruisewhats fashion 2007dkny luggageprinted backpacksdesigner leather beltsfashion collectionsantique jewelrywhite bedroom furnitureleather furniture upholsterycheap columbia winter jacketscelebrity cruises promotionscarnival cruises vs royal caribbeanwomens leather blazersvintage fringe bagroyal caribbean summer jobsfolly beach houses for saletahitian pearlsdiscount corporate giftscustom mugssummer beach vacation rentalscamera travel bagcrystal clutch purseeasy preschool winter craftsbest mexico vacation destinationsstrong bags luggagecherry g84 4100prausatlas cruises toursroyal caribbean international wikiyears a painteryellow hobo handbag10 day mediterranean cruisesnap buttons for leatherbuxton passport wallet shopbroyhill furniturebrother sewing machine accessoriesrestore antique steamer trunkfashion designernomad i wanna give you devotion60th wedding anniversary cake toppersfaux leather bomber jacket womenwenger luggage setspalm island the grenadinesfaux cowhidewinter accessories for womenromantic vacation rentalskid rock tour 2010cruise ship princesscustomized executive penslast minute family cruiseshort leather skirtsdiscount tumi luggagecosta cruises special dealsmyrtle beach house rentalblack footwearmark jacobs discountleather wallet with money clipmodeling acting auditionschristmas coloring pages kidsblack fur coatswool bathrobeslearn to oil paintpathfinder luggage repairdestin condowomens handbags wristlettobago cays hotelslong warm winter coatmonogrammed lunch bag boysnwa carry on luggage sizereplica lamborghiniprincess cruise line reviewsmirage m5 pleather furniture cleancoach purses bagsbetseyville handbags on salevictorinox mobilizerembroidered hatvintage walletsspeedy purserevell plastic airplane modelsframe satchel handbagsbest wheeled carry on luggagejonas brothers lyricsdesign your own shoes freegucci cross body bagsmall designer messenger bagjokes brain teasersleather card walletscompare dkny pursehartmann luggage saletripadvisor st vincent forumcruise direct onlinefour wheeler tire reviewslightweight samsonite luggage

Replica lv Hangbags

Replica Hangbags

Hangbags

replica handbags

replica handbags

replica handbags

replica handbags

handbags

handbags

replica handbags

replica handbags

replica handbags

usb cable

usb cable

usb cable

usb cable

usb cable

bag

usb flash drives

usb flash drives

usb flash drives

usb flash drives usb flash drives usb flash drives usb flash drives usb flash drives USB Connector
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载