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

  

原文地址:https://www.cnblogs.com/xiaofengfeng/p/2530893.html