Sql server 內建函式實現md5加密

2021-06-28 11:07:14 字數 1411 閱讀 4163

**

md5加密「123456」:

hashbytes('

md5','

123456

')

函式

描述返回值

hashbytes

hashbytes ('加密方式', '待加密的值')

加密方式= md2 | md4 | md5 | sha | sha1

返回值型別:varbinary(maximum 8000 bytes)

123456的md5 有工具可知結果為:e10adc3949ba59abbe56e057f20f883e

hashbytes生成的結果為:0xe10adc3949ba59abbe56e057f20f883e,16進製制的數值,去掉「0x」轉換為小寫值就完全與md5值吻合了,在此需要用另乙個函式(sys.fn_sqlvarbasetostr)把varbinary的值轉換為varchar型別的,完整sql如下:

select

substring(sys.fn_sqlvarbasetostr(hashbytes('

md5','

123456

')),3,32)

結果就是完整的md5值:e10adc3949ba59abbe56e057f20f883e

對**的一些說明

注意:hashbytes 函式的返回值的型別是varbinary 如果把結果儲存在varchar 型別的字段裡會亂碼

所以需要進行型別轉換

轉換函式為 sys.fn_varbintohexstr (這個函式是將二進位制轉換為16進製制)

雖然為16進製制 但是可以儲存在varchar型別的字段裡 不會亂碼, 長度固定為34 位

例如下面**

declare @password varchar(100)

set @password = sys.fn_varbintohexstr(hashbytes('md5','admin'))

select @password

結果是0x21232f297a57a5a743894a0e4a801fc3 長度是34 位

md5長度 應該是32位 上面的結果就多0x這個兩位 表示16進行的符號

SQL Server的內建函式

字元函式 1,返回字元表示式中最左側字元的ascii 值 select ascii a a 97,a 65 2,將整數ascii 轉換為字元 select char 97 97 a,65 a 3,返回具有給定的整數 的unicode字元 select nchar 65 a 4,返回表達第乙個字元的u...

SQL Server 常用內建函式

本文用於收集在運維中經常使用的系統內建 built in 函式,持續整理中 1,檢視資料庫的id和name db id db name db name db id 2,檢視物件的id和name,物件的schema,物件的定義 object id schema name object name obj...

Sql Server內建函式實現MD5加密

md5加密 123456 hashbytes md5 123456 函式描述返回值hashbytes hashbytes 加密方式 待加密的值 加密方式 md2 md4 md5 sha sha1 返回值型別 varbinary maximum 8000 bytes 123456的md5 有工具可知結...