

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 產生和驗證 MAC
<a name="crypto-ops-mac"></a>

訊息驗證碼 (MAC) 通常用於驗證訊息的完整性 （無論是否經過修改）。密碼編譯雜湊，例如 HMAC （以雜湊為基礎的訊息驗證碼）、CBC-MAC 和 CMAC （以密碼為基礎的訊息驗證碼），透過使用密碼編譯提供額外的 MAC 寄件者保證。HMAC 是以雜湊函數為基礎，而 CMAC 是以區塊加密為基礎。此服務也支援 ISO9797 演算法 1 和 3，這是 CBC-MACs的類型。

此服務的所有 MAC 演算法會結合密碼編譯雜湊函數和共用私密金鑰。它們會接收訊息和私密金鑰，例如金鑰中的金鑰材料，並傳回唯一的標籤或 mac。如果訊息的某個字元變更，或私密金鑰變更，則產生的標籤會完全不同。透過要求私密金鑰，密碼編譯 MACs也提供真實性；如果沒有私密金鑰，就無法產生相同的 mac。密碼編譯 MACs 有時稱為對稱簽章，因為它們的運作方式與數位簽章類似，但使用單一金鑰進行簽署和驗證。

AWS 付款密碼編譯支援數種類型的 MACs：

**ISO9797 ALGORITHM 1**  
由 `KeyUsage` ISO9797\$1ALGORITHM1 表示。如果欄位不是區塊大小的倍數 (TDES 為 8 個位元組/16 個十六進位字元，AES 為 16 個位元組/32 個字元， AWS 付款加密會自動套用 ISO9797 填補方法 1。如果需要其他填補方法，您可以在呼叫服務之前套用它們。

**ISO9797 ALGORITHM 3 （零售 MAC)**  
由 `KeyUsage` ISO9797\$1ALGORITHM3 表示。適用與演算法 1 相同的填補規則

**ISO9797 演算法 5 (CMAC)**  
由 `KeyUsage` TR31\$1M6\$1ISO\$19797\$15\$1CMAC\$1KEY 表示

**HMAC**  
由 `KeyUsage` TR31\$1M7\$1HMAC\$1KEY 表示，包括 HMAC\$1SHA224、HMAC\$1SHA256、HMAC\$1SHA384 和 HMAC\$1SHA512

**AS2805.4.1 MAC**  
由 `KeyUsage` TR31\$1M0\$1ISO\$116609\$1MAC\$1KEY 表示。如需 AS2805 的詳細資訊，請參閱 [AS2805](advanced.regional.as2805.md)

**DUKPT MAC**  
DUKPT MAC 通常用於確認往返付款終端機的訊息來源和承載。它使用 DUKPT 衍生技術衍生金鑰，然後執行 MAC。與此選項搭配使用的金鑰會以 TR31\$1B0\$1BASE\$1DERIVATION\$1KEY `KeyUsage`的 表示。

**EMV MAC**  
EMV MAC 通常在 EMV 文件中稱為完整性金鑰。它使用 EMV 衍生技術衍生金鑰，然後在內部使用 ISO9797\$1ALGORITHM3。它通常用於將發行者指令碼傳送到晶片卡以進行重新程式設計。與此選項搭配使用的金鑰會以 TR31\$1E2\$1EMV\$1MKEY\$1INTEGRITY `KeyUsage`的 表示。如果您同時傳送指令碼和更新離線接腳，請參閱 [GenerateMacEmvPinChange](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMacEmvPinChange) 以執行這兩個操作。

**Topics**
+ [產生 MAC](generate-mac.md)
+ [驗證 MAC](verify-mac.md)