SQL2005对字符串进行MD5加密

函数:

ALTER FUNCTION [dbo].[MD5] 

(

    -- 源字符串

    @src varchar(255),

    -- 加密类型(16/32)

    @type int = 32

)

RETURNS varchar(255)

WITH EXECUTE AS CALLER

AS

BEGIN

    -- 存放md5加密串(ox)

    DECLARE @smd5 varchar(34)



    -- 加密字符串

    SELECT @smd5 = sys.fn_VarBinToHexStr(hashbytes('MD5', @src));



    IF @type=16

        SELECT @smd5 = SUBSTRING(@smd5,11,16)   --16位

    ELSE

        SELECT @smd5 = SUBSTRING(@smd5,3,32)    --32位



    -- 返回加密串

    RETURN @smd5



END

  例子,解发器使用md5加密

CREATE TRIGGER trg_EncryptPwd

ON  Users

AFTER INSERT,UPDATE

AS 

BEGIN

    IF(UPDATE(Password))

    BEGIN

        DECLARE @uid int

        DECLARE @pwd varchar(32)

        -- 获取用户ID和密码

        SELECT @uid=UserID,@pwd=Password FROM inserted

        -- 更新密码

        UPDATE Users SET Password = dbo.MD5(@pwd,16) WHERE UserID = @uid

    END

END

GO

  

 

你可能感兴趣的:(sql2005)