MD5算法的T-SQL实现(FORSQL2000)(二)
来源:互联网 发布:恒大足校 知乎 编辑:程序博客网 时间:2024/05/29 21:18
IFEXISTS(SELECT*FROMDbo.sysobjectsWHEREid=OBJECT_ID(N'[dbo].[MD5_ConvertToArray]')ANDxtypeIN(N'FN',N'IF',N'TF'))
DROPFUNCTION[dbo].[MD5_ConvertToWordArray]
GO
/*****************************************************************************
*Name:MD5_ConvertToWordArray
*Description:MD5_ConvertToWordArray
*****************************************************************************/
CREATEFUNCTIONdbo.MD5_ConvertToWordArray(
@sOrigMess VARCHAR(8000) ='
)
RETURNS@tWordArrayTABLE([ID]INTIDENTITY(0,1),[Word]INT)
WITHENCRYPTION
AS
BEGIN
IF@sOrigMessISNULL
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
INSERTINTO@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
IFEXISTS(SELECT*FROMDbo.sysobjectsWHEREid=OBJECT_ID(N'[dbo].[MD5_WordToHex]')ANDxtypeIN(N'FN',N'IF',N'TF'))
DROPFUNCTION[dbo].[MD5_WordToHex]
GO
/*****************************************************************************
*Name:MD5_WordToHex
*Description:MD5_WordToHex
*****************************************************************************/
CREATEFUNCTIONdbo.MD5_WordToHex(
@iValue INT
)
RETURNSCHAR(8)
WITHENCRYPTION
AS
BEGIN
DECLARE@sRes VARCHAR(8)
DECLARE@iTmp INT
DECLARE@iCountTINYINT
SELECT@sRes=',@iCount=0
WHILE(@iCount<4)
BEGIN
SET@iTmp=dbo.MD5_RShift(@iValue,@iCount*8)&0x000000FF
SET@sRes=@sRes+CASE@iTmp/16WHEN0 THEN'0'
WHEN1 THEN'1'
WHEN2 THEN'2'
WHEN3 THEN'3'
WHEN4 THEN'4'
WHEN5 THEN'5'1
- MD5算法的T-SQL实现(FORSQL2000)(二)
- MD5算法的T-SQL实现(FORSQL2000)(一)
- MD5算法的T-SQL实现(FOR SQL2000)(二)
- MD5算法的T-SQL实现(FOR SQL2000)(一)
- MD5算法的T-SQL实现(FOR SQL2000)(一)
- T-SQL MD5算法实现
- T-SQL MD5算法实现
- T-SQL MD5算法实现
- T-SQL MD5算法实现
- T-SQL[MD5算法实现]
- MD5算法的T-SQL实现(FOR SQL2000)
- MD5算法的T-SQL实现(FOR SQL2000)(
- MD5算法的T-SQL实现(FOR SQL2000)
- MD5算法的T-SQL实现(FOR SQL2000)
- 经典T-SQL[MD5算法实现]
- (转贴)T-SQL MD5算法实现
- MD5算法(二)
- 精简的SQL二(T-SQL)
- SQL---JOIN之完全用法---
- 常用的40个网站制作技巧 (转)
- SQL语法参考手册(转)
- 白盒测试指南
- 实例解析-范型程序开发
- MD5算法的T-SQL实现(FORSQL2000)(二)
- vim使用小技巧(1)
- 什么是依赖注入
- javascript特效,信息滚动效果
- MD5算法的T-SQL实现(FORSQL2000)(一)
- DA19 – 使用Params 和更新规则的主细表
- 上传前预览Flash也可以预览图片
- [随记]JDK 5 运行时区不正确的解决办法
- 学习C#引用参数的体会 - An attitude will be everything(No risk,No gain) - 博客园