前几天做手机银联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 );
签名好之后 银联那边能够正确验签了。。