前几天做手机银联pos支付,在服务器端要对订单进行签名base64(rsa(md5(订单)));base64跟md5在php中都有现成的函数。但恰是这个,悲剧呀。。
php的md5()函数 是可以设置 返回值的:
string md5 ( string $str [, bool $raw_output = false ] );
如果可选的 raw_output 被设置为 TRUE,那么 MD5 报文摘要将以原始的 16 位二进制格式返回。
false的话:以 32 字符十六进制数字形式返回散列值。
竟然忽略了这个参数。。。
最终
md5 ( $订单, true );签名好之后 银联那边能够正确验签了。。

本文探讨了在PHP中使用MD5函数时的一个常见陷阱,即忽视了raw_output参数的设置,导致签名生成过程出现问题。通过正确使用MD5函数,确保了与银联POS支付系统的签名验证成功。
3493

被折叠的 条评论
为什么被折叠?



