PHP 板


LINE

看板 PHP  RSS
欧付宝是采用 AES 128Bit CBC 模式加密, 加密资料如果长度不是 16 Bytes 整数倍时会出问题。 必须透过 Padding 方式补齐。欧付宝是采用 PKCS17 Padding。 这边自己写了一个 Library 用 mcrpt 来做加解密。 class AESCrypt { protected $iv; protected $key; protected $blockSize; public function __construct($key, $iv = null, $mode = MCRYPT_MODE_CBC) { if($iv === null){ $size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, $mode); $iv = mcrypt_create_iv($size, MCRYPT_DEV_RANDOM); } $this->key = $key; $this->iv = $iv; $this->blockSize = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, $mode); } protected function addPadding($data) { $paddingSize = $this->blockSize - (strlen($data) % $this->blockSize); $data .= str_repeat(chr($paddingSize), $paddingSize); return $data; } protected function removePadding($data) { $len = strlen($data); $paddingSize = ord($data[$len-1]); return substr($data, 0, $len - $paddingSize); } public function encrypt($plainData) { return mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->key, $this->addPadding($plainData), MCRYPT_MODE_CBC, $this->iv); } public function decrypt($encryptData) { $decryptData = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->key, $encryptData, MCRYPT_MODE_CBC, $this->iv); return $this->removePadding($decryptData); } } 使用方式 $aesCrypt = new AESCrypt($key, $iv); $encryptedData = $aesCrypt->encrypt('Plain Data'); $plainData = $aesCrypt->decrypt($encryptedData); 注意这边的资料是使用 raw data。 如果要放在 XML 传输,请记得将 $encryptedData 做 base64_encode。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.130.136.115
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/PHP/M.1397697430.A.3DF.html
1F:推 olctw:推 04/17 11:11
2F:→ olctw:看样子很多人都转用 allpay 了,免年费真的很吸引人吧 XD 04/17 11:12
3F:→ alog:就整合过五六家以上的金流业者的系统... 04/17 13:36
4F:→ alog:allpay 的 document 算很齐全跟清楚了XDDD 04/17 13:36
5F:→ rickysu:不过他们的系统稳定度有点糟糕 04/17 17:07
6F:→ rickysu:曾经好几次系统回应取号成功,可是内容却是空的。 04/17 17:07
7F:→ rickysu:更别提returnUrl放入localhost对方系统就当场喷了。 04/17 17:08
8F:推 alog:XDD 04/17 19:15
9F:→ olctw:还有, webatm 的测试介面有些银行根本无法测试 XD 04/18 01:00
10F:→ rickysu:另外API也设计很差,都走SSL了为什麽还要将资料再加密一次 04/18 09:22
11F:→ alog:log service 也许会记录到 04/18 12:16
12F:→ alog:ssl 虽然是加密 但只保障传输层的安全 04/18 12:17
13F:→ alog:我个人是觉得这无所谓,加一层还可以 04/18 12:17
14F:→ alog:不过 api 的确是有点差 (但跟其他颜色跟老金流比较算好了) 04/18 12:18
15F:→ rickysu:刚刚又遇到一个无言的问题,callback资料XML竟然把 04/18 13:22
16F:→ rickysu:base64编码的资料中+号转换成空白,还得自己手动转回来 04/18 13:23
17F:→ rickysu:不然使用base64_decode会出问题 04/18 13:23
18F:→ alog:他api文件印象有提到Xd 04/18 20:54







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP