Sqlserver中很多时候需要对数据进行加密、或校验。自Sqlserver 2000 时代起,网络上流传着一个MD5的加密函数,说实在的,很复杂,很负责!
但最重要的是,该函数在sqlserver中的执行效率太低!适应不了大量数据的处理。
我曾想过很多方法试着解决:C语言编写扩展存储过程、.NET程序集,虽然最后都可以解决问题,但终归有些繁琐,不是正经的原生方式。
Sqlserver2005 都出了这么久了,偶就没有发现这个hashbytes函数可以构建原生的MD5函数,唉!汗颜!!!!
谨记、谨记、谨记、谨记
代码如下:
--创建md5函数 CREATE FUNCTION [dbo].[MD5](@src varchar(255) ) RETURNS varchar(255) AS BEGIN DECLARE @md5 varchar(34) SET @md5 = sys.fn_VarBinToHexStr(hashbytes('MD5', @src)); --RETURN SUBSTRING(@md5,11,16) --16位 RETURN SUBSTRING(@md5,3,32) --32位 END GO