我可以访问允许文件上传的数据库(SQL 2008 R2)。在一个表中,它有一个名为'hash_key'的列,我相信它是md5校验和。
我正在尝试在我正在编写的内容中包含一些逻辑,这些逻辑也可以解决md5文件。
问题是两个系统正在为同一个文件产生微妙不同的哈希值。系统将返回:
0x098F6BCD4621D373CADE4E832627B4F6
我的函数(以及一些在线函数)将为同一个文件返回
098F6BCD4621D373CADE4E832627B4F6
正如您所看到的,唯一不同的是前两个(0x)字符。这取决于数据库如何存储值?数据库字段是二进制(16)
在进行比较时,我可以安全地忽略前两个字符吗?
答案 0 :(得分:1)
0x
前缀的原因是数据库(正确地)返回十六进制值。在您的代码中,如果将值转换为十六进制,则两个值将匹配,因为0x
实际上不是值的一部分,它只是一个类型标识符
答案 1 :(得分:0)
您可以使用SQL函数
HASHBYTES('MD5', 'yourString') => 0x349DA9BFF6660DAD199ACF68D353DBA3
或者您可以使用
CONVERT(varchar(32),HASHBYTES('MD5', 'yourString),2) => 349DA9BFF6660DAD199ACF68D353DBA3