

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Genera l'offset dei IBM3624 pin per un pin
<a name="generate-ibm3624"></a>

 IBM 3624 PIN Offset è talvolta chiamato anche metodo IBM. Questo metodo genera un natural/intermediate PIN utilizzando i dati di convalida (in genere il PAN) e una chiave PIN (PVK). I pin naturali sono in effetti un valore derivato e, essendo deterministici, sono molto efficienti da gestire per l'emittente, perché non è necessario archiviare i dati relativi ai pin a livello del titolare della carta. Lo svantaggio più evidente è che questo schema non tiene conto dei pin selezionabili o casuali dal titolare della carta. Per consentire questi tipi di pin, è stato aggiunto allo schema un algoritmo di offset. L'offset rappresenta la differenza tra il pin selezionato dall'utente (o casuale) e la chiave naturale. Il valore di offset viene memorizzato dall'emittente della carta o dal processore della carta. Al momento della transazione, il servizio AWS Payment Cryptography ricalcola internamente il pin naturale e applica l'offset per trovare il pin. Quindi lo confronta con il valore fornito dall'autorizzazione della transazione. 

Esistono diverse opzioni per IBM3624:
+ `Ibm3624NaturalPin`emetterà il pin naturale e un blocco pin crittografato
+ `Ibm3624PinFromOffset`genererà un blocco pin crittografato dato un offset
+ `Ibm3624RandomPin`genererà un pin casuale e quindi l'offset corrispondente e il blocco pin crittografato.
+  `Ibm3624PinOffset`genera l'offset del pin in base a un pin selezionato dall'utente.

Internamente alla crittografia dei AWS pagamenti, vengono eseguiti i seguenti passaggi:
+ Riempi il riquadro fornito a 16 caratteri. Se vengono forniti <16, compatta sul lato destro usando il carattere di padding fornito.
+ Crittografa i dati di convalida utilizzando la chiave di generazione del PIN.
+ Decimalizza i dati crittografati utilizzando la tabella di decimalizzazione. Questo mappa le cifre esadecimali in cifre decimali, ad esempio «A» può essere mappato a 9 e 1 può essere mappato a 1.
+ Ottieni le prime 4 cifre da una rappresentazione esadecimale dell'output. Questa è la spilla naturale.
+ Se è stato generato un pin selezionato dall'utente o casuale, il modulo sottrae il pin naturale con il pin del cliente. Il risultato è l'offset del pin.

**Topics**
+ [Esempio: genera l'offset dei IBM3624 pin per un pin](#generate-ibm3624-random-example)

## Esempio: genera l'offset dei IBM3624 pin per un pin
<a name="generate-ibm3624-random-example"></a>

In questo esempio, genereremo un nuovo pin (casuale) in cui gli output saranno crittografati `PIN block` (. PinData PinBlock) e un valore di `IBM3624` offset (pinData.offset). Gli input sono i dati di convalida (in genere il pan)`PAN`, il carattere di riempimento, il, il e il. `Pin Verification Key` `Pin Encryption Key` `PIN block format`

 Questo comando richiede che la chiave di generazione del pin sia di tipo `TR31_V1_IBM3624_PIN_VERIFICATION_KEY` e che la chiave di crittografia sia di tipo `TR31_P0_PIN_ENCRYPTION_KEY` 

**Example**  
L'esempio seguente mostra la generazione di un pin casuale, quindi l'emissione del blocco pin crittografato e del valore di IBM3624 offset utilizzando Ibm3624 RandomPin   

```
$ 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"
              }
          }
```