------------------------------------------
-- SQL Server 2005 MD5 函数
------------------------------------------
IF OBJECT_ID('dbo.fnCreateMD5') IS NOT NULL
DROP FUNCTION dbo.fnCreateMD5;
GO
CREATE FUNCTION dbo.fnCreateMD5
(
@pmInputStr VARCHAR(MAX), --要进行MD5的原字符串
@pmReturnLen INT =32 --返回生成MD5串后所要截取的长度
)
RETURNS VARCHAR(32) --MD5转换为字符串后为32位
WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
DECLARE @ReturnMD5 NVARCHAR(32)
SELECT @ReturnMD5=SUBSTRING(CONVERT(NVARCHAR(34),sys.fn_VarBinToHexStr(HashBytes('MD5',@pmInputStr))),3,@pmReturnLen);
RETURN @ReturnMD5
END;
GO
-- Input Jim Return d54b3c8fcd5ba07e47b400e69a287966
SELECT dbo.fnCreateMD5('Jim',Default) AS MD5;
--Input Jim,12 Return d54b3c8fcd5b
SELECT dbo.fnCreateMD5('Jim',12) AS MD5;
/*
HashBytes 函数:
返回输入的MD2、MD4、MD5、SHA 或 SHA1哈希值
语法:HashByts('',{@Input|'Input})
:::=MD2|MD4|MD5|SHA|SHA1
:@input|'input' 指定包含要对其执行哈希操作的数据变量|字符串 其数据类习为:Varchar NVARCHAR VARBINARY
返回值: varbinary 最大为8000个字符
sys.fn_VarBinToHexStr 函数:
系统内置函数,转换varbinary 可变长度二进制型数据到 16 进制字符串
*/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15042150/viewspace-616557/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/15042150/viewspace-616557/