參數加密方式說明
綠界會提供 AES 加解密用的HashKey,IV值須自行產生長度為12的英數字,並將要加密資料先做URL Encode編碼,再進行加密。
- AES 加密的強度設定方式是 128 bit
- CipherMode : GCM
- 加密結果 = IV(12B) + Ciphertext + Tag(16B) 組成,採 Base64 編碼
注意事項:
- 以下為測試範例的資訊,請勿對正式環境做處理否則無法正常介接。
- 更換介接正式環境時,請將以下資訊更換成正式環境中特店所持有的相關資訊,請參考正式環境金鑰取得。
加密範例
- MerchantID = 2000132
- HashKey = 5294y06JbISpM5x9
- IV = 亂數產生長度12的英數字
(1) 加密前Data資料:
{"Name":"Test","ID":"A123456789"}
(2) URLEncode編碼後結果:
2.1 特殊字元編碼後英文為大寫時:
%7B%22Name%22%3A%22Test%22%2C%22ID%22%3A%22A123456789%22%7D
2.2 特殊字元編碼後英文為小寫時:
%7b%22Name%22%3a%22Test%22%2c%22ID%22%3a%22A123456789%22%7d
(3) AES-GCM 加密步驟分解:
3.1 準備 IV(需自行亂數產生英數字)
RTXYjMh6Dgjr
3.2 執行加密,將 URLEncode 後的字串作為明文,使用 HashKey 加密,產生 Ciphertext (密文) + Tag (16 Bytes 認證標籤)。:
UlRYWWpNaDZEZ2py8AwGr+FWrz1q66iOZ77fINOObexz3eUQ6QW4T3CbUYCFcyRlnCq30oQvG313GcbT5b9crt6TmEJSj0v0tgCEr7EOpv5QcbkMIxwd
3.3 資料組合,依照 IV + Ciphertext + Tag 順序組合:
RTXYjMh6DgjrUlRYWWpNaDZEZ2py8AwGr+FWrz1q66iOZ77fINOObexz3eUQ6QW4T3CbUYCFcyRlnCq30oQvG313GcbT5b9crt6TmEJSj0v0tgCEr7EOpv5QcbkMIxwd
(4) Base64 加密資料:
UlRYWWpNaDZEZ2pyVWxSWVdXcE5hRFpFWjJweThBd0dyK0ZXcnoxcTY2aU9aNzdmSU5PT2JleHozZVVRNlFXNFQzQ2JVWUNGY3lSbG5DcTMwb1F2RzMxM0djYlQ1YjljcnQ2VG1FSlNqMHYwdGdDRXI3RU9wdjVRY2JrTUl4d2Q=
解密範例
- MerchantID=2000132
- HashKey=ejCk326UnaZWKisg
(1) Data密文:
UlRYWWpNaDZEZ2pyVWxSWVdXcE5hRFpFWjJweThBd0dyK0ZXcnoxcTY2aU9aNzdmSU5PT2JleHozZVVRNlFXNFQzQ2JVWUNGY3lSbG5DcTMwb1F2RzMxM0djYlQ1YjljcnQ2VG1FSlNqMHYwdGdDRXI3RU9wdjVRY2JrTUl4d2Q=
(2) Base64 解密:
RTXYjMh6DgjrUlRYWWpNaDZEZ2py8AwGr+FWrz1q66iOZ77fINOObexz3eUQ6QW4T3CbUYCFcyRlnCq30oQvG313GcbT5b9crt6TmEJSj0v0tgCEr7EOpv5QcbkMIxwd
(3) AES-GCM 解密步驟分解::
3.1 取出IV值
IV:
RTXYjMh6Dgjr
Ciphertext + Tag:
UlRYWWpNaDZEZ2py8AwGr+FWrz1q66iOZ77fINOObexz3eUQ6QW4T3CbUYCFcyRlnCq30oQvG313GcbT5b9crt6TmEJSj0v0tgCEr7EOpv5QcbkMIxwd
3.2 執行解密
%7b%22Name%22%3a%22Test%22%2c%22ID%22%3a%22A123456789%22%7d
(4)URLDecode解碼後結果:
{"Name":"Test","ID":"A123456789"}