Day06 永丰金API 基础流程 -- 讯息内文

还是一样先上图

https://ithelp.ithome.com.tw/upload/images/20210912/20118647kbH47kBGUu.png

终於来到第六点了!!!可喜可贺
看一下文件中产生Message的方法

https://ithelp.ithome.com.tw/upload/images/20210912/20118647kOXXbbSEGk.png

5.5.2. IV 计算
产出 IV 值前必须要先行取得 Nonce 後才能产生,计算方式是将取得的 Nonce 值
作 SHA256 加密後,再将英文转换成大写取字串右边 16 码长度
(例:CB6FA68E42B655AB)

//取得 IV 计算方法
function getIV($nonce){
    $data = SHA256($nonce);
    return substr($data, strlen($data) - 16, 16);
}

//SHA256 後字串转大写
function SHA256($data){
    return strtoupper(hash('sha256', $data));
}

取得IV的方法比较单纯基本上就照着文件的流程下去编写即可,
来看主角Message的取得

https://ithelp.ithome.com.tw/upload/images/20210912/201186474PmFooO3QD.png

来人先上范例

//$data 为api所需参数的json格式
//$key 就是我们先前提到的hashId
//AES CBC 加密
function EncryptAesCBC($data, $key, $iv) {
    $result = '';
    $padding = 16 - (strlen($data) % 16);
    $data .= str_repeat(chr($padding), $padding);
    $encrypt = openssl_encrypt($data, 'AES-256-CBC', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv);

    $result = strtoupper(bin2hex($encrypt));

    return $result;
}

这边如果有google怎麽做aes cbc加密,
应该都会看到openssl_encrypt函式的一些使用方式,
但除非你有经验,或者偷看答案,不然根本找不到下面code的线索

$padding = 16 - (strlen($data) % 16);
$data .= str_repeat(chr($padding), $padding);

因此串接第三方有个秘诀叫做倒果为因,先去看范例或者前人提供的解答,
然後再去了解整个过程,这也是为什麽很多第三方需要提供范例的原因,
这部份先前取得hashId的部份也是同样的原理。

回到程序,透过范例我们可以取得加密过後的讯息内文,
加上前几天的Nonce、HashID、Sign这样我们要发送api所需的参数都已经到齐了,
明天我们整理一下之後就准备call api啦!


<<:  IOS、Python自学心得30天 Day-9 模组训练改善-1

>>:  [Day 7] Leetcode 621. Task Scheduler (C++)

23. 如何开启一段职涯对话?

前言 这篇文章超级适合给manager们,特别是那些非常重视团队成员成长的领导人们。或许你曾经尝试...

EDRM(电子发现参考模型)

-电子发现参考模型 证据开示,在英美法关系法域中,是诉讼中的一种预审程序,当事人通过民事诉讼法,可...

[前端暴龙机,Vue2.x 进化 Vue3 ] Day16.父子组件的沟通-props

在上一篇的内容中,已经介绍到了该如何写一个组件并完成应用了,现在再继续进入更深一点的运用吧~ 对於 ...

【Windows】安装 Apache Web Server(含多版本PHP并存)

前言 架设php最简单的方法,大概是用xampp。但是有时候专案会用到不同php版本,需要切换。就算...

交易策略 - Backtrader

以下内容皆参考 Backtrader 官网 之前介绍了 shioaji 如何取得资料, 下单,也介绍...