圖 6-1: 各欄位資料範例
發送給 Order API 的欄位資料只差 Message
欄位了。我們再來複習一下發送給 API 的各欄位取得方法及說明,以加深印像。
欄位名稱 | 取得方法 | 說明 |
---|---|---|
Version | 技術客服提供 | 固定值: 1.0.0 |
ShopNo | 技術客服提供 | 商店代碼 |
APIService | 文件第 5 頁 | API 服務 |
Sign | 商店用戶自行產生 | 產生方法請參閱 Day 3: HashId、Day 4: 訊息內文雜湊、Day 5:產生 SHA256 加密後的 Sign。 |
Nonce | API平台提供 | 取得方法請參閱 Day 2 |
Message | 商店用戶自行產生 | 產生方法請參閱本篇文章 |
接著查閱 API 文章關於產生 Message 的方法。
圖 6-2: 文件條目,第五章節第五段
IV (initialization vector),中文翻為初始向量,為了避免加密的內容被破解而在加密時加入的亂數值。
圖 6-3: 文件第 22 頁,IV 計算說明
為確保這個亂數夠亂,且商店用戶端和 API 平台兩邊的 IV 一致,可成功解密加入後的內容,IV 值由 API 平台提供的 Nonce 值經過處理取得。
由於 IV 是從 Nonce 計算而出,而 Nonce 的效期為 60 秒,等同於 IV 值的效期也同為 60 秒,提高加密的安全性。
PHP 的開發者可使用 hash
函式使用 SHA256 模式來加密 Nonce,接著截取加密後的字串從右邊算過來倒數 16 個字元即為 IV 值。
圖 6-4: PHP 範例,計算 IV 值
截取字串的函式可使用 substr
。以上為 PHP 程式範例。
總結今天的文章,整個計算 IV 的流程可簡化為下圖:
*圖 6-5: 計算 IV 流程示意圖
現在我們已經很清楚知道 IV 的用途和計算的方法,也已經有了HashId 作為加密用的 Key,所需條件皆已準備好了,明天就可以開始進行 Message 欄位的處理囉 ^^