您好,欢迎访问一九零五行业门户网

有没有谁搞过银联POS终端mac算法[php版本]?

安全机制
对报文进行mac,以实现防篡改
发起方先对标签数据进行base64编码,根据编码后的数据,然后进行循环异或(将数据分成若干个8个字节的数据段,最后不足8位后加0x00补齐8位)。得到标签数据。然后将新的报文发送给对方。
为原始报文的base64编码结果
xmlccb_pospos_service20111121094051pd94bwwgdmvyc2lvbj0ims4wiiblbmnvzgluzz0ivvrgltgipz48zgf0yt48chjvzhvjdd4wmzi2pc9wcm9kdwn0pjxwcmvtaxvtpjexmdaumdwvchjlbwl1bt48zhjpdmvycz48zhjpdmvypkphbwvzpc9kcml2zxi+pgryaxzlcj5uzwrketwvzhjpdmvypjwvzhjpdmvycz48l2rhdge+ 8u42kxyd76fscmrt //char 16

处理方式
接收方在接收到报文后,将标签数据分成若干个8个字节的数据段,最后不足8位后加0x00补齐8位,循环异或一次。然后和标签数据进行比对。如果比对一致表示通过验证,最后将标签数据按照base64解码,得到交易明文数据。
参考文档
http://blog.163.com/gene_lu/blog/static/6402542120133151112717/
网上找了一段php代码
这代码有问题,大概方式。
php异或的结果进行des 异或 d2 —>异或的结果进行des 异或 d2 —>异或的结果进行desfunction mac_($data){ //设初始值 $init=\x00\x00\x00\x00\x00\x00\x00\x00; //对$data进行8字节分割,获得数组 $tmp_data=strtoarray($data,8); $tmp_init=$init; foreach($tmp_data as $value) { //进行异或运算 $tmp_init=myencrypt($tmp_init,$value);var_dump($tmp_init); //进行加密 //$tmp_init=mcrypt_str($tmp_init); } var_dump($tmp_init); return bin2hex($tmp_init);}//函数名:strtoarray//说明:将字符串按8字节切割,最后不足8字节的用\x00填补function strtoarray($str,$limit){ $len=strlen($str); $tmp_arr=array(); $count=floor($len/$limit); $left_num=$len-$count*$limit; for($i=0;$i$limit+1) { $str=substr($str,$limit,strlen($str)); } } return $tmp_arr;}//函数名:myencrypt//说明:异或运算函数function myencrypt($string, $key){ for($i=0;$i

不知道哪位研究过没有,怎么做的,没有头绪。
回复内容: 安全机制
对报文进行mac,以实现防篡改
发起方先对标签数据进行base64编码,根据编码后的数据,然后进行循环异或(将数据分成若干个8个字节的数据段,最后不足8位后加0x00补齐8位)。得到标签数据。然后将新的报文发送给对方。
为原始报文的base64编码结果
xmlccb_pospos_service20111121094051pd94bwwgdmvyc2lvbj0ims4wiiblbmnvzgluzz0ivvrgltgipz48zgf0yt48chjvzhvjdd4wmzi2pc9wcm9kdwn0pjxwcmvtaxvtpjexmdaumdwvchjlbwl1bt48zhjpdmvycz48zhjpdmvypkphbwvzpc9kcml2zxi+pgryaxzlcj5uzwrketwvzhjpdmvypjwvzhjpdmvycz48l2rhdge+ 8u42kxyd76fscmrt //char 16

处理方式
接收方在接收到报文后,将标签数据分成若干个8个字节的数据段,最后不足8位后加0x00补齐8位,循环异或一次。然后和标签数据进行比对。如果比对一致表示通过验证,最后将标签数据按照base64解码,得到交易明文数据。
参考文档
http://blog.163.com/gene_lu/blog/static/6402542120133151112717/
网上找了一段php代码
这代码有问题,大概方式。
php异或的结果进行des 异或 d2 —>异或的结果进行des 异或 d2 —>异或的结果进行desfunction mac_($data){ //设初始值 $init=\x00\x00\x00\x00\x00\x00\x00\x00; //对$data进行8字节分割,获得数组 $tmp_data=strtoarray($data,8); $tmp_init=$init; foreach($tmp_data as $value) { //进行异或运算 $tmp_init=myencrypt($tmp_init,$value);var_dump($tmp_init); //进行加密 //$tmp_init=mcrypt_str($tmp_init); } var_dump($tmp_init); return bin2hex($tmp_init);}//函数名:strtoarray//说明:将字符串按8字节切割,最后不足8字节的用\x00填补function strtoarray($str,$limit){ $len=strlen($str); $tmp_arr=array(); $count=floor($len/$limit); $left_num=$len-$count*$limit; for($i=0;$i$limit+1) { $str=substr($str,$limit,strlen($str)); } } return $tmp_arr;}//函数名:myencrypt//说明:异或运算函数function myencrypt($string, $key){ for($i=0;$i

不知道哪位研究过没有,怎么做的,没有头绪。
全是二进制的, php 弄, 太费劲了吧. 为何不用 java 来搞
其它类似信息

推荐信息