sys.fn_VarBinToHexStr MD5加密异常,求解

zhilongquan4 2011-02-26 03:54:27

SELECT
sys.fn_VarBinToHexStr(hashbytes('MD5','e')) as a1,
sys.fn_VarBinToHexStr(hashbytes('MD5','abf4d2cd155c81a9'))as a2,
SUBSTRING(sys.fn_VarBinToHexStr(hashbytes('MD5', 'abf4d2cd155c81a9')),6,1) as a3,
sys.fn_VarBinToHexStr(hashbytes('MD5',SUBSTRING(sys.fn_VarBinToHexStr(hashbytes('MD5','abf4d2cd155c81a9')),6,1)))as a4


结果:

a1
0xe1671797c52e15f763380b45e841ec32

a2
0x87ee52dc5e0be9c463f920a0371d81aa

a3
e

a4
0xa3962977a46ba2d91f2554e527ba98d6

a1 和 a4 都是对 小写字母e进行了MD5加密。为什么出来的结果不一样?
...全文
276 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
aylm129 2012-06-29
  • 打赏
  • 举报
回复
2搂怎么看不到?
快溜 2011-02-26
  • 打赏
  • 举报
回复
 
cast('e' as varbinary(max))=
SUBSTRING(sys.fn_VarBinToHexStr(hashbytes('MD5', 'abf4d2cd155c81a9')),6,1)
SQL77 2011-02-26
  • 打赏
  • 举报
回复
....没明白
Linares 2011-02-26
  • 打赏
  • 举报
回复
可以再反过来验证:

SELECT 
sys.fn_VarBinToHexStr(hashbytes('MD5',N'e')) as a1, -- 指定 N'e'
sys.fn_VarBinToHexStr(hashbytes('MD5','abf4d2cd155c81a9'))as a2,
SUBSTRING(sys.fn_VarBinToHexStr(hashbytes('MD5', 'abf4d2cd155c81a9')),6,1) as a3,
sys.fn_VarBinToHexStr(hashbytes('MD5',SUBSTRING(sys.fn_VarBinToHexStr(hashbytes('MD5','abf4d2cd155c81a9')),6,1)))as a4

Linares 2011-02-26
  • 打赏
  • 举报
回复 1
因为数据类型不同:

SELECT 
sys.fn_VarBinToHexStr(hashbytes('MD5','e')) as a1, -- e / varchar(1)
sys.fn_VarBinToHexStr(hashbytes('MD5','abf4d2cd155c81a9'))as a2,
SUBSTRING(sys.fn_VarBinToHexStr(hashbytes('MD5','abf4d2cd155c81a9')),6,1) as a3, -- nvarchar(max)
sys.fn_VarBinToHexStr(hashbytes('MD5',convert(varchar(max),SUBSTRING(sys.fn_VarBinToHexStr(hashbytes('MD5','abf4d2cd155c81a9')),6,1))))as a4

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧