

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

# 產生接腳的 IBM3624 接腳位移
<a name="generate-ibm3624"></a>

 IBM 3624 PIN 位移有時也稱為 IBM 方法。此方法會使用驗證資料 （通常是 PAN) 和 PIN 金鑰 (PVK) 產生自然/中繼 PIN。自然接腳實際上是衍生的值，而且對於發行者來說，決定性非常有效率，因為不需要將接腳資料存放在持卡人層級。最明顯的缺點是，此機制不會考慮持卡人可選或隨機接腳。為了允許這些類型的接腳，已將偏移演算法新增至結構描述。偏移代表使用者選取 （或隨機） 接腳與自然金鑰之間的差異。位移值由卡片發行者或卡片處理器存放。在交易時間， AWS 付款密碼編譯服務會在內部重新計算自然接腳，並套用偏移來尋找接腳。然後，它會將此值與交易授權提供的值進行比較。

IBM3624 有幾個選項：
+ `Ibm3624NaturalPin` 將輸出自然接腳和加密接腳區塊
+ `Ibm3624PinFromOffset` 會在有位移的情況下產生加密的 PIN 區塊
+ `Ibm3624RandomPin` 會產生隨機接腳，然後產生相符的位移和加密接腳區塊。
+  `Ibm3624PinOffset` 會在使用者選取的接腳後產生接腳位移。

在 AWS 付款密碼編譯內部，會執行下列步驟：
+ 將提供的平移填補為 16 個字元。如果提供 <16，請使用提供的填補字元在右側進行填補。
+ 使用 PIN 產生金鑰加密驗證資料。
+ 使用小數表對加密的資料進行小數。這會將十六進位數字映射到執行個體「A」的小數位，可能映射到 9，而 1 可能映射到 1。
+ 從輸出的十六進位表示法取得前 4 位數。這是自然接腳。
+ 如果產生使用者選取或隨機接腳，模數會使用客戶接腳減去自然接腳。結果是接腳位移。

**Topics**
+ [範例：產生接腳的 IBM3624 接腳位移](#generate-ibm3624-random-example)

## 範例：產生接腳的 IBM3624 接腳位移
<a name="generate-ibm3624-random-example"></a>

在此範例中，我們將產生新的 （隨機） 接腳，其中輸出將是加密的 `PIN block`(PinData.PinBlock) 和`IBM3624`位移值 (pinData.Offset). 輸入為 `PAN`、驗證資料 （通常是平移）、填補字元`Pin Verification Key`、、 `Pin Encryption Key`和 `PIN block format`。

 此命令要求 PIN 產生金鑰為 類型，`TR31_V1_IBM3624_PIN_VERIFICATION_KEY`而加密金鑰為 類型 `TR31_P0_PIN_ENCRYPTION_KEY` 

**Example**  
下列範例顯示產生隨機接腳，然後使用 Ibm3624RandomPin 輸出加密接腳區塊和 IBM3624 偏移值 Ibm3624RandomPin   

```
$ aws payment-cryptography-data generate-pin-data --generation-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0 --generation-attributes Ibm3624RandomPin="{DecimalizationTable=9876543210654321,PinValidationDataPadCharacter=D,PinValidationData=171234567890123}"
```

```
{
              "GenerationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
              "GenerationKeyCheckValue": "7F2363",
              "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
              "EncryptionKeyCheckValue": "7CC9E2",
              "EncryptedPinBlock": "AC17DC148BDA645E",
              "PinData": {
                  "PinOffset": "5507"
              }
          }
```