最近遇到了一个奇葩的问题,采用mysql内置md5算法加密的数据与php程序md5算法加密的数据不一致。具体如下:
其他部门提了一个小需求,有一批excel格式的数据,要做个小的在线查询功能,通过身份证号查询其他信息,但是其中身份证要加密。
解决思路把excel数据导入到mysql中,通过内置md5函数加密身份证列,然后把前台提交的身份证号用php进行md5加密,查询数据库,取出相关信息就可以了。
做起来很简单,可是运行起来出错,发现mysql内置md5算法加密的数据与php程序md5算法加密的数据不一致。
最开始想的是编码问题和数据库字段类型设计的问题,检查了一遍均没解决。
后来仔细看了一遍导入的原始数据才发现,由于excel中存在的制表符、换行符导致导入到mysql中的数据前后有特殊空白字符,那数据都不一样了,md5的结果当然不一样了!!!