当前位置: 首页 > 資訊 >

Day 6 - 產生內文加密所需的 IV 值

圖 6-1
圖 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
圖 6-2: 文件條目,第五章節第五段

IV 用途

IV (initialization vector),中文翻為初始向量,為了避免加密的內容被破解而在加密時加入的亂數值。

圖 6-3
圖 6-3: 文件第 22 頁,IV 計算說明

為確保這個亂數夠亂,且商店用戶端和 API 平台兩邊的 IV 一致,可成功解密加入後的內容,IV 值由 API 平台提供的 Nonce 值經過處理取得。

由於 IV 是從 Nonce 計算而出,而 Nonce 的效期為 60 秒,等同於 IV 值的效期也同為 60 秒,提高加密的安全性。

IV 計算

PHP 的開發者可使用 hash 函式使用 SHA256 模式來加密 Nonce,接著截取加密後的字串從右邊算過來倒數 16 個字元即為 IV 值。

圖 6-4
圖 6-4: PHP 範例,計算 IV 值

截取字串的函式可使用 substr。以上為 PHP 程式範例。

流程總結

總結今天的文章,整個計算 IV 的流程可簡化為下圖:

圖 6-5
*圖 6-5: 計算 IV 流程示意圖

現在我們已經很清楚知道 IV 的用途和計算的方法,也已經有了HashId 作為加密用的 Key,所需條件皆已準備好了,明天就可以開始進行 Message 欄位的處理囉 ^^