函数:
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