当前位置: 首页 > 图文教程 > 数据库 > MSSQL > MD5算法的T-SQL实现(FOR SQL2000)(一)

MSSQL
SQL0290N表空间状态问题:停顿的独占处理
实例讲解启动mysql server失败的解决方法
SQL Server 2005数据转换服务设计问题集锦
不能安装SQL Server 2005的问题及解决方法
SQL中Groupby和Having的使用方法
SQL Server中Update的用法
MSSQL中部分字段重复数据的删除方法
mssql 大小写区分方法
Sql server中时间查询的一个比较快的语句
机器异常关闭重起后出现ora-19809错误
快速解决日志文件满造成的无法写入问题
启用数据库复制时为什么会出现18483错误
实例讲解Ora-12514和Ora-12514解决方法
实例讲解MSDB数据库置疑状态的解决方法
实例讲解SQL查询连续号码段的巧妙解法
用一个案例讲解应用程序越来越慢的原因
一则DB2数据库重定向表空间的恢复案例
SCN不一致将会导致ORA-00600 2662错误
Vista下安装SQL Sever 2005报错的解决办法
用一条SQL实现:一行多个字段数据的最大值

MSSQL 中的 MD5算法的T-SQL实现(FOR SQL2000)(一)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 95 ::
收藏到网摘: n/a

*****************************************************************************
* 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