

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

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

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

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

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

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

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

**ISO9797 演算法 5 (CMAC)**  
由 `KeyUsage` TR31\_M6\_ISO\_9797\_5\_CMAC\_KEY 表示

**HMAC**  
由 `KeyUsage` TR31\_M7\_HMAC\_KEY 表示，包括 HMAC\_SHA224、HMAC\_SHA256、HMAC\_SHA384 和 HMAC\_SHA512

**AS2805.4.1 MAC**  
由 `KeyUsage` TR31\_M0\_ISO\_16609\_MAC\_KEY 表示。如需 AS2805 的詳細資訊，請參閱 [AS2805](advanced.regional.as2805.md)

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

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

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