我在理解如何处理MySQL4.1.22中MD5函数的输入时遇到了一些问题。基本上,我无法重新创建特定值组合的MD5sum进行比较。我想这和输入数据的格式有关。
我已经建立了一个表,其中有两列类型为double(方向和高度)+第三列,用于存储MD5和。
使用安装脚本,我将数据添加到方向和高程字段+使用以下语法创建校验和:
insert into polygons (
direction,
elevation,
md5sum
)
values (
(select radians(20.0)),
(select radians(30.0)),
( md5( (select radians(20.0)) + (select radians(20.0)) ) )
)
结果是:
0.349065850398866, 0.523598775598299, '0c2cd2c2a9fe40305c4e3bd991812df5'
稍后,我将存储的MD5sum与新计算的MD5sum进行比较,新计算的创建使用
md5('0.349065850398866' + '0.523598775598299')
我得到以下校验和:
'8c958bcf912664d6d27c50f1034bdf34'
如果我将传递的“字符串”中的最后一个小数从9改为8
0.523598775598298
我得到与以前存储的校验和相同的校验和,
'0c2cd2c2a9fe40305c4e3bd991812df5'
. 从8到0的最后一个小数的任何值都会给出相同的校验和。
使用
BINARY, (md5( (select BINARY(radians(20.0))) + (select BINARY(radians(20.0))) )
在安装脚本中,创建与原始“运行时计算”相同的校验和。
值得一提的是,原始方法适用于我拥有的所有其他行(55)
我想我是用了一种有点奇怪的方式使用这个函数,但是我不确定更好的方法,所以为了找到更好的方法,我觉得我需要理解为什么电流会失效。