64位linux下md5加密出错的调查

工作时遇到平台注册机生成的序列号注册时提示序列号不合法。

跟踪发现注册机与库对字符串进行md5加密不对,但32位的linux平台是可以的。

问题的关键是检测注册的md5的头文件中字义了typedef unsigned long int UINT4;

md5检测的结构中用到了UNIT4的变量,

在32位下这是32bit(4字节)长,但到了64位下这是64bit(8字节)长了。

要在这个结构前加上

 #ifndef __x86_64__
typedef unsigned long int UINT4;
#else
typedef unsigned int UINT4;
#endif 

这样到64位就使用unsigned int,这样长度就是4一样了。

加密出来的才是对的。


同时也可以用md5sum对字符串加密,原来只知道可以查出文件的md5值。

用echo -n 字符串| md5sum就可以得到加密数据了


另外查得日期转换成星期几,得到星期天是0,认为出错了。

其实这是对的,算出来的数据%7,星期天就是0了,再换成7就对了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值