【发布时间】:2009-10-26 17:43:58
【问题描述】:
我在理解如何处理 MySQL 4.1.22 中 md5 函数的输入时遇到问题。基本上我无法重新创建特定值组合的 md5sum 进行比较。我想这与输入数据的格式有关。
我已经建立了一个表格,其中包含两列双精度(方向和高度)+第三列用于存储 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 与新计算的值进行比较,新计算的值是使用 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)
我想我正在以一种有点奇怪的方式使用该功能,但我不确定更好的方式,所以为了找到更好的方式,我觉得我需要了解当前失败的原因。
【问题讨论】: