有好几次碰到使用Linux的md5sum命令产出的散列值,跟PHP的md5函数,或者MySQL的md5函数产生的不一样的问题. 通常比较懒,就没细想,直接使用PHP产生的算了;没想过难道算法还会有不同. 其实没有不同的算法,md5在哪里的计算方法只有一个.原因不过是因为使用md5sum时,有时候不小心会把换行符也作为计算的内容,结果实际上是散列的对象不同,自然结果也就不同了.而在Linux命令行状态下,我通常注意不到换行的存在. 以字符串’123′为例,PHP的计算结果是: 比如下列语句实际上是对”123\n”进行求散列,而不是对’123′求散列. 正确的写法应该是通过echo的’-n’选项,让echo不要输出换行符,这样结果就一样了.
最近评论