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

MSSQL
SQLSERVER 中datetime 和 smalldatetime类型分析说明
数据库清除日志文件(LDF文件过大)
按日期选择最晚日期与最早日期对应的数的差值
sql 时间函数 整理的比较全了
SQL Server全文检索查询浅析
SQL 存储过程基础语法之一
SQL Substring提取部分字符串
用户"sa"登陆失败 SQLServer 错误18456的解决方法
MSSQL 检查所使用的语句是否符合标准
drop,truncate与delete的区别
SQL语句查询数据库中重复记录的个数
SQL 导入导出Excel数据的语句
可以获取客户端的IP地址的sql语句
SQL 根据汉字获取全拼的代码
sqlserver exists,not exists的用法
sqlserver substring函数使用方法小结
sql 判断数据库,表,存储过程等是否存在的代码
做购物车系统时利用到得几个sqlserver 存储过程
Sql2000数据库的备份文件恢复到Sql2005的方法
sql 分组查询问题

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 144 ::
收藏到网摘: 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