

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Operaciones de datos
<a name="data-operations"></a>

Una vez establecida una clave de criptografía de AWS pago, se puede utilizar para realizar operaciones criptográficas. Las distintas operaciones llevan a cabo distintos tipos de actividad, desde el cifrado y el cifrado hasta el uso de algoritmos específicos del dominio, como la generación. CVV2 

Los datos cifrados no se pueden descifrar sin la clave de descifrado correspondiente (la clave simétrica o la clave privada, según el tipo de cifrado). Del mismo modo, los algoritmos de hash y los algoritmos específicos de un dominio no se pueden verificar sin la clave simétrica o la clave pública. 

Para obtener información sobre los tipos de clave válidos para operaciones específicas, consulte [Claves válidas para operaciones criptográficas](crypto-ops-validkeys-ops.md)

**nota**  
Recomendamos utilizar datos de prueba en un entorno que no sea de producción. El uso de claves y datos de producción (PAN, ID de BDK, etc.) en un entorno ajeno a la producción puede afectar al ámbito de cumplimiento, por ejemplo, en el caso de PCI DSS y PCI P2PE. 

**Topics**
+ [Cifrar, descifrar y volver a cifrar datos](crypto-ops.encryptdecrypt.md)
+ [Generación y verificación de datos de tarjetas](crypto-ops-carddata.md)
+ [Generar, traducir y verificar los datos del PIN](data-operations.pindata.md)
+ [Verificar el criptograma de solicitud de autenticación (ARQC)](data-operations.verifyauthrequestcryptogram.md)
+ [Generar y verificar MAC](crypto-ops-mac.md)
+ [Claves válidas para las operaciones criptográficas](crypto-ops-validkeys-ops.md)

# Cifrar, descifrar y volver a cifrar datos
<a name="crypto-ops.encryptdecrypt"></a>

Los métodos de cifrado y descifrado se pueden utilizar para cifrar o descifrar datos mediante una variedad de técnicas simétricas y asimétricas, incluidas TDES, AES y RSA. [Estos métodos también admiten claves derivadas mediante las técnicas [DUKPT](terminology.md#terms.dukpt) y EMV.](terminology.md#terms.emv) Para los casos de uso en los que desee proteger los datos con una clave nueva sin exponer los datos subyacentes, también se puede utilizar el ReEncrypt comando.

**nota**  
 Al utilizar las encrypt/decrypt funciones, se supone que todas las entradas están en HexBinary; por ejemplo, un valor de 1 se introducirá como 31 (hexadecimal) y una t minúscula se representará como 74 (hexadecimal). Todas las salidas también están en hexBinary. 

[Para obtener más información sobre todas las opciones disponibles, consulte la Guía de la API para [cifrar](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_EncryptData.html), [descifrar y volver a cifrar.](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_DecryptData.html)](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_ReEncryptData.html) 

**Topics**
+ [Cifrar datos](encrypt-data.md)
+ [Descifrado de datos](decrypt-data.md)

# Cifrar datos
<a name="encrypt-data"></a>

 [[La `Encrypt Data` API se utiliza para cifrar datos mediante claves de cifrado de datos simétricas y asimétricas, así como claves derivadas de DUKPT y EMV.](terminology.md#terms.emv)](terminology.md#terms.dukpt) Se admiten varios algoritmos y variaciones, incluidos `TDES`, `RSA` y `AES`.

Las entradas principales son la clave de cifrado utilizada para cifrar los datos, los datos de texto simple en formato HexBinary que se van a cifrar y los atributos de cifrado, como el vector de inicialización y el modo para los cifrados por bloques, como el TDES. Los datos en texto plano deben estar en múltiplos de 8 bytes para`TDES`, 16 bytes para `AES` y la longitud de la clave en el caso de. `RSA` Las entradas clave simétricas (TDES, AES, DUKPT, EMV) deben rellenarse en los casos en que los datos de entrada no cumplan estos requisitos. La siguiente tabla muestra la longitud máxima del texto sin formato para cada tipo de clave y el tipo de relleno que se define para las claves RSA. `EncryptionAttributes`


| Tipo de relleno | RSA\$12048 | RSA\$13072 | RSA\$14096 | 
| --- | --- | --- | --- | 
| OAEP SHA1 | 4.28 | 684 | 940 | 
| OAEP SHA256 | 380 | 636 | 892 | 
| OAEP SHA512 | 252 | 508 | 764 | 
| PKCS1 | 488 | 744 | 1 000 | 
| None | 488 | 744 | 1 000 | 

Las salidas primarias incluyen los datos encriptados como texto cifrado en formato hexBinario y el valor de la suma de comprobación de la clave de encriptación. Para obtener más información sobre todas las opciones disponibles, consulte la Guía de API para [Encrypt](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_EncryptData.html). 

**Topics**
+ [Cifrar datos utilizando la clave simétrica AES](#w2aac15c16c11c13)
+ [Cifrar los datos con la clave DUKPT](#w2aac15c16c11c15)
+ [Cifre los datos mediante una clave simétrica derivada de EMV](#w2aac15c16c11c17)
+ [Cifrado de los datos utilizando una clave de RSA](#crypto-ops.encrypt-rsa)

## Cifrar datos utilizando la clave simétrica AES
<a name="w2aac15c16c11c13"></a>

**nota**  
 En todos los ejemplos se asume que la clave correspondiente ya existe. Las claves se pueden crear mediante la [CreateKey](create-keys.md)operación o importar mediante la [ImportKey](keys-import.md)operación. 

**Example**  
 En este ejemplo, cifraremos los datos en texto plano mediante una clave simétrica que se creó mediante la [CreateKey](create-keys.md)operación o se importó mediante la operación. [ImportKey](keys-import.md) Para esta operación, la clave debe estar configurada en `Encrypt` y KeyModesOfUse KeyUsage establecida en. `TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY` Consulte [Claves para operaciones criptográficas](crypto-ops-validkeys-ops.md) para ver más opciones.   

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --plain-text 31323334313233343132333431323334 --encryption-attributes 'Symmetric={Mode=CBC}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```

## Cifrar los datos con la clave DUKPT
<a name="w2aac15c16c11c15"></a>

**Example**  
 En este ejemplo, cifraremos los datos en texto plano mediante una clave [DUKPT](terminology.md#terms.dukpt). AWS Soportes de criptografía de pagos y claves DUKPT. `TDES` `AES` Para esta operación, la clave debe estar configurada en `DeriveKey` y KeyModesOfUse KeyUsage configurada en. `TR31_B0_BASE_DERIVATION_KEY` Consulte [Claves para operaciones criptográficas](crypto-ops-validkeys-ops.md) para ver más opciones.   

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --plain-text 31323334313233343132333431323334 --encryption-attributes 'Dukpt={KeySerialNumber=FFFF9876543210E00001}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```

## Cifre los datos mediante una clave simétrica derivada de EMV
<a name="w2aac15c16c11c17"></a>

**Example**  
 En este ejemplo, cifraremos los datos de texto no cifrado mediante una clave simétrica derivada de EMV que ya se ha creado. Puede utilizar un comando como este para enviar datos a una tarjeta EMV. Para esta operación, la clave debe estar KeyModesOfUse configurada en `Derive` y KeyUsage establecida en `TR31_E1_EMV_MKEY_CONFIDENTIALITY` o`TR31_E6_EMV_MKEY_OTHER`. Consulte [Claves para operaciones criptográficas](crypto-ops-validkeys-ops.md) para obtener más información.   

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --plain-text 33612AB9D6929C3A828EB6030082B2BD --encryption-attributes 'Emv={MajorKeyDerivationMode=EMV_OPTION_A,PanSequenceNumber=27,PrimaryAccountNumber=1000000000000432,SessionDerivationData=02BB000000000000, InitializationVector=1500000000000999,Mode=CBC}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "CipherText": "33612AB9D6929C3A828EB6030082B2BD"
}
```

## Cifrado de los datos utilizando una clave de RSA
<a name="crypto-ops.encrypt-rsa"></a>

**Example**  
 En este ejemplo, cifraremos los datos en texto plano mediante una [clave pública RSA](terminology.md#terms.publickey) que se importó mediante la operación. [ImportKey](keys-import.md) Para esta operación, la clave debe estar configurada en `Encrypt` y KeyModesOfUse KeyUsage establecida en. `TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION` Consulte [Claves para operaciones criptográficas](crypto-ops-validkeys-ops.md) para ver más opciones.   
 Para PKCS \$17 u otros esquemas de relleno no admitidos actualmente, solicítelos antes de llamar al servicio y seleccione sin relleno omitiendo el indicador de relleno * 'Asymmetric=\$1\$1'*   

```
$ aws payment-cryptography-data encrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/thfezpmsalcfwmsg --plain-text 31323334313233343132333431323334 --encryption-attributes 'Asymmetric={PaddingType=OAEP_SHA256}'
```

```
     
{
 "CipherText": "12DF6A2F64CC566D124900D68E8AFEAA794CA819876E258564D525001D00AC93047A83FB13 \ 
 E73F06329A100704FA484A15A49F06A7A2E55A241D276491AA91F6D2D8590C60CDE57A642BC64A897F4832A3930 \ 
 0FAEC7981102CA0F7370BFBF757F271EF0BB2516007AB111060A9633D1736A9158042D30C5AE11F8C5473EC70F067 \ 
 72590DEA1638E2B41FAE6FB1662258596072B13F8E2F62F5D9FAF92C12BB70F42F2ECDCF56AADF0E311D4118FE3591 \ 
 FB672998CCE9D00FFFE05D2CD154E3120C5443C8CF9131C7A6A6C05F5723B8F5C07A4003A5A6173E1B425E2B5E42AD \ 
 7A2966734309387C9938B029AFB20828ACFC6D00CD1539234A4A8D9B94CDD4F23A",
 "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/5dza7xqd6soanjtb",
 "KeyCheckValue": "FF9DE9CE"
}
```

# Descifrado de datos
<a name="decrypt-data"></a>

 [La `Decrypt Data` API se utiliza para descifrar datos mediante claves de cifrado de datos simétricas y asimétricas, así como claves derivadas de [DUKPT](terminology.md#terms.dukpt) y EMV.](terminology.md#terms.emv) Se admiten varios algoritmos y variaciones, incluidos `TDES`, `RSA` y `AES`.

 Las entradas principales son la clave de descifrado utilizada para descifrar los datos, los datos del texto cifrado en formato hexBinario que deben descifrarse y los atributos de descifrado, como el vector de inicialización, el modo como los cifradores de bloques, etc. Las salidas principales incluyen los datos descifrados como texto plano en formato hexBinario y el valor de la suma de comprobación de la clave de descifrado. [Para obtener más información sobre todas las opciones disponibles, consulte la Guía de API para descifrar.](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_DecryptData.html) 

**Topics**
+ [Descifrar los datos mediante la clave simétrica AES](#w2aac15c16c13b9)
+ [Descifrar los datos con la clave DUKPT](#w2aac15c16c13c11)
+ [Descifre los datos mediante una clave simétrica derivada de EMV](#w2aac15c16c13c13)
+ [Descifrar datos con una clave de RSA](#crypto-ops.decrypt-rsa)

## Descifrar los datos mediante la clave simétrica AES
<a name="w2aac15c16c13b9"></a>

**Example**  
 En este ejemplo, descifraremos los datos de texto cifrado mediante una clave simétrica. En este ejemplo se muestra una `AES` clave, pero también `TDES_2KEY` se admiten. `TDES_3KEY` Para esta operación, la clave debe estar KeyModesOfUse configurada en `Decrypt` y KeyUsage establecida en`TR31_D0_SYMMETRIC_DATA_ENCRYPTION_KEY`. Consulte [Claves para operaciones criptográficas](crypto-ops-validkeys-ops.md) para ver más opciones.   

```
$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --cipher-text 33612AB9D6929C3A828EB6030082B2BD --decryption-attributes 'Symmetric={Mode=CBC}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "PlainText": "31323334313233343132333431323334"
}
```

## Descifrar los datos con la clave DUKPT
<a name="w2aac15c16c13c11"></a>

**nota**  
 El uso del descifrado de datos con DUKPT para las transacciones P2PE puede devolver a su aplicación el PAN de la tarjeta de crédito y otros datos del titular de la tarjeta que deberán tenerse en cuenta a la hora de determinar su alcance PCI DSS. 

**Example**  
 En este ejemplo, descifraremos los datos de texto cifrado mediante una clave [DUKPT](terminology.md#terms.dukpt) que se creó mediante la [CreateKey](create-keys.md)operación o se importó mediante la operación. [ImportKey](keys-import.md) Para esta operación, la clave debe estar establecida en y KeyModesOfUse configurada en. `DeriveKey` KeyUsage `TR31_B0_BASE_DERIVATION_KEY` Consulte [Claves para operaciones criptográficas](crypto-ops-validkeys-ops.md) para ver más opciones. Cuando se utiliza `DUKPT`, como algoritmo `TDES`, la longitud de los datos del texto cifrado debe ser un múltiplo de 16 bytes. Para el algoritmo `AES`, la longitud de los datos del texto cifrado debe ser un múltiplo de 32 bytes.   

```
$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --cipher-text 33612AB9D6929C3A828EB6030082B2BD --decryption-attributes 'Dukpt={KeySerialNumber=FFFF9876543210E00001}'
```

```
         
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "71D7AE",
    "PlainText": "31323334313233343132333431323334"
}
```

## Descifre los datos mediante una clave simétrica derivada de EMV
<a name="w2aac15c16c13c13"></a>

**Example**  
 En este ejemplo, descifraremos los datos de texto cifrado mediante una clave simétrica derivada de EMV que se creó mediante la operación o se importó mediante la operación. [CreateKey[ImportKey](keys-import.md)](create-keys.md) Para esta operación, la clave debe estar establecida en y KeyModesOfUse establecida en o. `Derive` KeyUsage `TR31_E1_EMV_MKEY_CONFIDENTIALITY` `TR31_E6_EMV_MKEY_OTHER` Consulte [Claves para operaciones criptográficas](crypto-ops-validkeys-ops.md) para obtener más información.   

```
$ aws payment-cryptography-data decrypt-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --cipher-text 33612AB9D6929C3A828EB6030082B2BD --decryption-attributes 'Emv={MajorKeyDerivationMode=EMV_OPTION_A,PanSequenceNumber=27,PrimaryAccountNumber=1000000000000432,SessionDerivationData=02BB000000000000, InitializationVector=1500000000000999,Mode=CBC}'
```

```
{
"KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
"KeyCheckValue": "71D7AE",
"PlainText": "31323334313233343132333431323334"
}
```

## Descifrar datos con una clave de RSA
<a name="crypto-ops.decrypt-rsa"></a>

**Example**  
 En este ejemplo, descifraremos los datos de texto cifrado mediante un [par de claves RSA](terminology.md#terms.privatekey) que se creó mediante la operación. [CreateKey](create-keys.md) Para esta operación, la clave debe estar configurada como `Decrypt` habilitada y KeyModesOfUse configurada como. KeyUsage `TR31_D1_ASYMMETRIC_KEY_FOR_DATA_ENCRYPTION` Consulte [Claves para operaciones criptográficas](crypto-ops-validkeys-ops.md) para ver más opciones.   
 Para PKCS \$17 u otros esquemas de relleno no admitidos actualmente, seleccione sin relleno omitiendo el indicador de relleno * 'Asymmetric=\$1\$1'* y elimine el relleno después de llamar al servicio.   

```
$ aws payment-cryptography-data decrypt-data \ 
        --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/5dza7xqd6soanjtb --cipher-text 8F4C1CAFE7A5DEF9A40BEDE7F2A264635C... \ 
        --decryption-attributes 'Asymmetric={PaddingType=OAEP_SHA256}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-1:111122223333:key/5dza7xqd6soanjtb",
    "KeyCheckValue": "FF9DE9CE",
    "PlainText": "31323334313233343132333431323334"
}
```

# Generación y verificación de datos de tarjetas
<a name="crypto-ops-carddata"></a>

Generar y verificar los datos de la tarjeta incorpora datos derivados de los datos de la tarjeta, por ejemplo CVV CVV2, CVC y DCVV.

**Topics**
+ [Generar datos de tarjetas](generate-card-data.md)
+ [Comprobación de datos de tarjetas](verify-card-data.md)

# Generar datos de tarjetas
<a name="generate-card-data"></a>

 La `Generate Card Data` API se utiliza para generar datos de tarjetas mediante algoritmos como CVV o Dynamic. CVV2 CVV2 Para ver qué claves se pueden usar para este comando, consulte la sección [Claves válidas para operaciones criptográficas](crypto-ops-validkeys-ops.md). 

Muchos valores criptográficos, como el CVV, CVV2 el CVV o el CVV V7, utilizan el mismo algoritmo criptográfico, pero varían los valores de entrada. Por ejemplo, [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) tiene entradas como el número de tarjeta y la fecha de caducidad ServiceCode. Si bien [CardVerificationValue2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html) solo tiene dos de estas entradas, esto se debe a que para CVV2/CVC2, el ServiceCode está fijado en 000. Del mismo modo, para iCVV, el valor ServiceCode se fija en 999. Algunos algoritmos pueden reutilizar los campos existentes, como el CAVV V8, en cuyo caso tendrá que consultar el manual del proveedor para obtener los valores de entrada correctos. 

**nota**  
 La fecha de caducidad debe introducirse en el mismo formato (por ejemplo, MMYY o YYMM) para que la generación y la validación arrojen resultados correctos. 

# Generar CVV2
<a name="generate-cvv2"></a>

**Example**  
En este ejemplo, generaremos un CVV2 para un PAN determinado con entradas de la fecha de `PAN` caducidad de la tarjeta. Esto supone que se ha [generado](create-keys.md#cvvkey-example) una clave de verificación de la tarjeta.   

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --primary-account-number=171234567890123 --generation-attributes CardVerificationValue2={CardExpiryDate=0123}
```

```
  {
      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
      "KeyCheckValue": "CADDA1",
      "ValidationData": "801"
  }
```

# Genera iCVV
<a name="generate-iCVV"></a>

**Example**  
En este ejemplo, generaremos un [iCVV](terminology.md#terms.icvv) para un PAN determinado con entradas de`PAN`, un código de servicio 999 y una fecha de caducidad de la tarjeta. Esto supone que se ha [generado](create-keys.md#cvvkey-example) una clave de verificación de la tarjeta.   
Para ver todos los parámetros disponibles, consulta el apartado [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) de la guía de referencia de la API.   

```
$ aws payment-cryptography-data generate-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --primary-account-number=171234567890123 --generation-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=999}'
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "CADDA1",
    "ValidationData": "801"
}
```

# Comprobación de datos de tarjetas
<a name="verify-card-data"></a>

`Verify Card Data` se utiliza para verificar los datos que se han creado mediante algoritmos de pago que se basan en principios de cifrado, como `DISCOVER_DYNAMIC_CARD_VERIFICATION_CODE`. 

Los valores de entrada suelen proporcionarse como parte de una transacción entrante a un emisor o a un socio de plataforma de apoyo. Para verificar un criptograma ARQC (utilizado para tarjetas con chips EMV), consulte [Verificar el ARQC.](data-operations.verifyauthrequestcryptogram.md) 

Para obtener más información, consulte [VerifyCardValidationData](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyCardValidationData.html)la guía de la API.

Si se verifica el valor, la API devolverá http/200. Si no se verifica el valor, devolverá http/400.

# Verifica CVV2
<a name="verify-cvv2"></a>

**Example**  
En este ejemplo, validaremos un CVV/ CVV2 para un PAN determinado. Por lo general, CVV2 lo proporciona el titular de la tarjeta o el usuario durante el momento de la transacción para su validación. Para validar su entrada, se proporcionarán los siguientes valores durante el tiempo de ejecución: la [clave que se utilizará para la validación (CVK)](create-keys.md#cvvkey-example) y la fecha de caducidad de la tarjeta`PAN`, y CVV2 se ingresarán. El formato de caducidad de la tarjeta debe coincidir con el utilizado en la generación del valor inicial.   
Para ver todos los parámetros disponibles, consulte el [CardVerificationValueapartado 2](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue2.html) de la guía de referencia de la API.   

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --primary-account-number=171234567890123 --verification-attributes CardVerificationValue2={CardExpiryDate=0123} --validation-data 801
```

```
  {
      "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
      "KeyCheckValue": "CADDA1"
  }
```

# Verifica el iCVV
<a name="verify-iCVV"></a>

**Example**  
En este ejemplo, verificaremos un [iCVV](terminology.md#terms.icvv) para un PAN determinado con las entradas de la [clave que se utilizará para la validación (CVK)](create-keys.md#cvvkey-example), un código de servicio 999`PAN`, la fecha de caducidad de la tarjeta y el iCVV proporcionado por la transacción para la validación.   
El iCVV no es un valor introducido por el usuario (por ejemplo CVV2), sino que está incrustado en una tarjeta EMV. Se debe tener en cuenta si siempre debe validarse cuando se proporciona.  
Para ver todos los parámetros disponibles, consulte el apartado [CardVerificationValue1](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_CardVerificationValue1.html) de la guía de referencia de la API.   

```
$ aws payment-cryptography-data verify-card-validation-data --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi --primary-account-number=171234567890123 --verification-attributes CardVerificationValue1='{CardExpiryDate=1127,ServiceCode=999} --validation-data 801
```

```
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "CADDA1",
    "ValidationData": "801"
}
```

# Generar, traducir y verificar los datos del PIN
<a name="data-operations.pindata"></a>

Las funciones de datos PIN permiten generar códigos PIN al azar, valores de verificación de números PIN (PVV) y validar los pines entrantes cifrados comparándolos con valores PVV o compensaciones de PIN. 

La traducción de pines permite convertir un pin de una clave funcional a otra sin exponer el pin en texto claro, tal y como se especifica en el requisito 1 del PIN PCI.

**nota**  
 Como la generación y la validación del PIN suelen ser funciones del emisor y la traducción del PIN es una función típica del adquirente, recomendamos que considere el acceso con menos privilegios y establezca las políticas adecuadas para el caso de uso de su sistema. 

**Topics**
+ [Traducir datos PIN](translate-pin-data.md)
+ [Generar datos PIN](generate-pin-data.md)
+ [Comprobación de datos PIN](verify-pin-data.md)

# Traducir datos PIN
<a name="translate-pin-data"></a>

Las funciones de traducir datos PIN se utilizan para traducir los datos PIN cifrados de un conjunto de claves a otro sin que los datos cifrados salgan del HSM. Se utiliza para el cifrado P2PE, en el que las claves de trabajo deberían cambiar, pero el sistema de procesamiento no necesita descifrar los datos o no está autorizado a hacerlo. Las entradas principales son los datos cifrados, la clave de cifrado utilizada para cifrar los datos y los parámetros utilizados para generar los valores de entrada. El otro conjunto de entradas son los parámetros de salida solicitados, como la clave que se utilizará para cifrar la salida y los parámetros que se utilizarán para crear esa salida. Las salidas principales son un conjunto de datos recién cifrado, así como los parámetros utilizados para generarlo. 

**nota**  
Para cumplir con la normativa PCI, los PrimaryAccountNumber valores de entrada y salida deben coincidir. No está permitido traducir un PIN de un PAN a otro.

**Topics**
+ [PIN de PEK a DUKPT](#crypto-ops-pindata.pektodukpt)
+ [PIN de PEK a PEK](#crypto-ops-pindata.pektopek)

## PIN de PEK a DUKPT
<a name="crypto-ops-pindata.pektodukpt"></a>

**Example**  
En este ejemplo, traduciremos un PIN de un bloque AES ISO 4 PIN usando el cifrado [DUKPT](terminology.md#terms.dukpt) a PEK TDES usando un bloque ISO 0 PIN. Esto es habitual cuando un terminal de pago cifra un PIN en ISO 4 y, después, puede volver a traducirlo al TDES para su procesamiento posterior si la siguiente conexión aún no admite el AES.   

```
$ aws payment-cryptography-data translate-pin-data --encrypted-pin-block "AC17DC148BDA645E" --outgoing-translation-attributes=IsoFormat0='{PrimaryAccountNumber=171234567890123}' --outgoing-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt  --incoming-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/4pmyquwjs3yj4vwe --incoming-translation-attributes IsoFormat4="{PrimaryAccountNumber=171234567890123}" --incoming-dukpt-attributes KeySerialNumber="FFFF9876543210E00008"  
```

```
    {
            "PinBlock": "1F4209C670E49F83E75CC72E81B787D9",
            "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
            "KeyCheckValue": "7CC9E2"
        }
```

## PIN de PEK a PEK
<a name="crypto-ops-pindata.pektopek"></a>

**Example**  
En este ejemplo, traducimos un PIN cifrado con un PEK (clave de cifrado PIN) a otro PEK. Esto se suele utilizar para enrutar transacciones entre diferentes sistemas o socios que utilizan diferentes claves de cifrado y, al mismo tiempo, se mantiene el cumplimiento del PIN PCI al mantener el PIN cifrado durante todo el proceso. En este ejemplo, ambas claves utilizan el cifrado TDES de 3 claves, pero hay una variedad de opciones disponibles, que incluyen AES ISO-4 a TDES ISO-0, DUKPT a PEK o PEK. AS2805   

```
$ aws payment-cryptography-data translate-pin-data --encrypted-pin-block "AC17DC148BDA645E" \
    --incoming-translation-attributes IsoFormat0='{PrimaryAccountNumber=171234567890123}' \
    --incoming-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt \
    --outgoing-translation-attributes IsoFormat0='{PrimaryAccountNumber=171234567890123}' \
    --outgoing-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh
```

```
{
    "PinBlock": "E8F2A6C4D1B93E7F",
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/alsuwfxug3pgy6xh",
    "KeyCheckValue": "9A325B"
}
```
El bloque PIN de salida ahora está cifrado con el segundo PEK y se puede transmitir de forma segura al sistema descendente que contiene la clave correspondiente.

# Generar datos PIN
<a name="generate-pin-data"></a>

Las funciones de generación de datos PIN se utilizan para generar valores relacionados con el PIN, como el [PVV](terminology.md#terms.pvv) y las compensaciones de bloques de pines que se utilizan para validar la introducción de los PIN por parte de los usuarios durante el tiempo de transacción o autorización. Esta API también puede generar un nuevo pin al azar mediante varios algoritmos.

# Genera un PIN aleatorio y un Visa PVV correspondiente
<a name="generate-pvv-random"></a>

**Example**  
En este ejemplo, generaremos un nuevo pin (aleatorio) donde las salidas serán cifradas `PIN block` (PinData. PinBlock) y un `PVV` (pinData.Offset). Las entradas clave son `PAN`, `Pin Verification Key`, `Pin Encryption Key` y `PIN block format`.   
 Este comando requiere que la clave sea de tipo. `TR31_V2_VISA_PIN_VERIFICATION_KEY`   

```
$ 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 VisaPin={PinVerificationKeyIndex=1}
```

```
{
            "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": {
                "VerificationValue": "5507"
            }
        }
```

# Genera una Visa PVV para un pin conocido
<a name="generate-pvv-givenpin"></a>

**Example**  
En este ejemplo, generaremos un PVV para un pin determinado (cifrado). Un PIN cifrado se puede recibir en sentido ascendente, por ejemplo, desde un terminal de pago o desde el titular de una tarjeta, utilizando el flujo de pines [seleccionable por el usuario](https://github.com/aws-samples/samples-for-payment-cryptography-service/tree/main/python_sdk_example/ecdh_flows). Las entradas clave son`PAN`, la `Pin Verification Key``Pin Encryption Key`, la y la`Encrypted Pin Block`. `PIN block format`   

```
$ 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 VisaPinVerificationValue={PinVerificationKeyIndex=1,EncryptedPinBlock=AA584CED31790F37}
```

```
{
            "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": {
                "VerificationValue": "5507"
            }
        }
```

# Genera el desfase de un IBM3624 pin para un pin
<a name="generate-ibm3624"></a>

 El IBM 3624 PIN Offset también se denomina a veces método IBM. Este método genera un natural/intermediate PIN utilizando los datos de validación (normalmente el PAN) y una clave PIN (PVK). Los pines naturales son, en efecto, un valor derivado y, al ser deterministas, son muy eficientes de manejar para el emisor, ya que no es necesario almacenar los datos del pin a nivel del titular de la tarjeta. La desventaja más obvia es que este esquema no tiene en cuenta los pines aleatorios o seleccionables por el titular de la tarjeta. Para permitir esos tipos de pines, se agregó un algoritmo de compensación al esquema. El desplazamiento representa la diferencia entre el pin seleccionado por el usuario (o al azar) y la clave natural. El emisor o el procesador de la tarjeta almacenan el valor de compensación. En el momento de la transacción, el servicio de criptografía de AWS pagos recalcula internamente el pin natural y aplica la compensación para encontrarlo. A continuación, lo compara con el valor proporcionado por la autorización de la transacción. 

Existen varias opciones para IBM3624:
+ `Ibm3624NaturalPin`generará el pin natural y un bloque de pines cifrado
+ `Ibm3624PinFromOffset`generará un bloque de pines cifrado con un desfase
+ `Ibm3624RandomPin`generará un pin aleatorio y, a continuación, el bloque de pines cifrado y desplazado correspondiente.
+  `Ibm3624PinOffset`genera el desfase del pin dado el pin seleccionado por el usuario.

Dentro de la criptografía de AWS pagos, se llevan a cabo los siguientes pasos:
+ Rellene el panel proporcionado hasta 16 caracteres. Si se proporcionan <16, rellene en el lado derecho con el carácter de relleno proporcionado.
+ Cifra los datos de validación mediante la clave de generación del PIN.
+ Decimalice los datos cifrados mediante la tabla de decimalización. Esto asigna dígitos hexadecimales a dígitos decimales, por ejemplo, «A» puede asignarse a 9 y 1 puede asignarse a 1.
+ Obtenga los primeros 4 dígitos de una representación hexadecimal de la salida. Este es el pin natural.
+ Si el usuario seleccionó un pin o se generó de forma aleatoria, resta el pin natural del pin del cliente. El resultado es el desfase del pin.

**Topics**
+ [Ejemplo: generar un desfase entre IBM3624 polos para un polo](#generate-ibm3624-random-example)

## Ejemplo: generar un desfase entre IBM3624 polos para un polo
<a name="generate-ibm3624-random-example"></a>

En este ejemplo, generaremos un nuevo pin (aleatorio) donde las salidas serán cifradas `PIN block` (PinData. PinBlock) y un valor de `IBM3624` compensación (pinData.Offset). Las entradas son los `PAN` datos de validación (normalmente la panorámica), el carácter de relleno, el`Pin Verification Key`, el y el. `Pin Encryption Key` `PIN block format`

 Este comando requiere que la clave de generación del pin sea del tipo `TR31_V1_IBM3624_PIN_VERIFICATION_KEY` y la clave de cifrado sea del tipo `TR31_P0_PIN_ENCRYPTION_KEY` 

**Example**  
El siguiente ejemplo muestra cómo se genera un pin aleatorio y, a continuación, se genera el bloque de pines cifrado y el valor de IBM3624 compensación mediante 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"
              }
          }
```

# Comprobación de datos PIN
<a name="verify-pin-data"></a>

Las funciones de comprobación de datos PIN se utilizan para comprobar si un PIN es correcto. Por lo general, esto implica comparar el valor del PIN previamente almacenado con el que ingresó el titular de la tarjeta en un POI. Estas funciones comparan dos valores sin exponer el valor subyacente de ninguna de las fuentes. 

## Valide el PIN cifrado mediante el método PVV
<a name="verify-pin-data.pvv-example"></a>

**Example**  
En este ejemplo, validaremos un PIN para un PAN determinado. Por lo general, el titular de la tarjeta o el usuario proporcionan el PIN durante el momento de la transacción para su validación y se compara con el valor registrado (la entrada del titular de la tarjeta se proporciona como un valor cifrado del terminal u otro proveedor principal). Para validar esta entrada, también se proporcionarán los siguientes valores en tiempo de ejecución: la clave utilizada para cifrar el pin de entrada (que suele ser un`IWK`) `PAN` y el valor con el que realizar la verificación (a o). `PVV` `PIN offset`   
Si la criptografía de AWS pago puede validar el PIN, se devuelve un http/200. Si el pin no está validado, devolverá un http/400.  

```
$ aws payment-cryptography-data verify-pin-data --verification-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  --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=5507}" --encrypted-pin-block AC17DC148BDA645E 
```

```
        {
            "VerificationKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2",
            "VerificationKeyCheckValue": "7F2363",
            "EncryptionKeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/ivi5ksfsuplneuyt",
            "EncryptionKeyCheckValue": "7CC9E2",
    
        }
```

## Valide el PIN cifrado mediante el método PVV: error: pin incorrecto
<a name="verify-pin-data.pvv-example.badpin"></a>

**Example**  
En este ejemplo, intentaremos validar un PIN para un PAN determinado, pero fallará porque el PIN es incorrecto.   
Al usarlo SDKs, aparece como \$1"Mensaje» :"No se pudo verificar el bloqueo del PIN». , «Reason» :"INVALID\$1PIN "\$1  

```
$ aws payment-cryptography-data verify-pin-data --verification-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  --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=9999}" --encrypted-pin-block AC17DC148BDA645E 
```

```
        An error occurred (VerificationFailedException) when calling the VerifyPinData operation: Pin block verification failed. 
```

## Valide el PIN cifrado mediante el método PVV; se produce un error al introducir datos erróneos
<a name="verify-pin-data.pvv-example.badkey"></a>

**Example**  
En este ejemplo, intentaremos validar un PIN para un PAN determinado, pero fallará debido a una entrada incorrecta y a que los datos entrantes no eran un PIN válido. Las causas más comunes son: 1 tecla incorrecta 2 parámetros de entrada, como el formato panorámico o de bloque de pines, son incorrectos o 3 el bloque de pines está dañado.   

```
$ aws payment-cryptography-data verify-pin-data --verification-key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/37y2tsl45p5zjbh2 --encryption-key-identifier  --primary-account-number 171234567890123 --pin-block-format ISO_FORMAT_0  --verification-attributes VisaPin="{PinVerificationKeyIndex=1,VerificationValue=9999}" --encrypted-pin-block AC17DC148BDA645E 
```

```
        An error occurred (ValidationException) when calling the VerifyPinData operation: Pin block provided is invalid. Please check your input to ensure all field values are correct.
```

# Valide un PIN comparándolo con el desfase de pin almacenado anteriormente IBM3624
<a name="verify-pin-data.ibm3624-example"></a>

En este ejemplo, validaremos el PIN proporcionado por el titular de la tarjeta con la diferencia de pin almacenada en el archivo del emisor o procesador de la tarjeta. Las entradas son similares a [Genera el desfase de un IBM3624 pin para un pin](generate-ibm3624.md) las del PIN cifrado adicional que proporciona el terminal de pago (u otro proveedor previo, como la red de tarjetas). Si el pin coincide, la API devolverá http 200., donde las salidas serán cifradas `PIN block` (. PinData PinBlock) y un valor de `IBM3624` compensación (pINData.Offset). 

 Este comando requiere que la clave de generación del pin sea de tipo `TR31_V1_IBM3624_PIN_VERIFICATION_KEY` y la clave de cifrado sea de tipo `TR31_P0_PIN_ENCRYPTION_KEY` 

**Example**  

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

# Verificar el criptograma de solicitud de autenticación (ARQC)
<a name="data-operations.verifyauthrequestcryptogram"></a>

 La API de verificación del criptograma de solicitud de autenticación se utiliza para verificar el [ARQC](terminology.md#terms.arqc). La generación del ARQC está fuera del alcance de la criptografía de AWS pagos y, por lo general, se realiza en una tarjeta con chip EMV (o un equivalente digital, como una billetera móvil) durante el tiempo de autorización de la transacción. Un ARQC es único para cada transacción y su objetivo es mostrar criptográficamente la validez de la tarjeta y garantizar que los datos de la transacción coincidan exactamente con los de la transacción actual (esperada). 

AWS La criptografía de pagos ofrece una variedad de opciones para validar el ARQC y generar valores ARPC opcionales, incluidos los definidos en la [EMV 4.4, libro](https://www.emvco.com/specifications/?post_id=80377) 2, y otros esquemas utilizados por Visa y Mastercard. [Para obtener una lista completa de todas las opciones disponibles, consulte la sección de la VerifyCardValidationData Guía de API.](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyCardValidationData.html) 

Los criptogramas ARQC suelen requerir las siguientes entradas (aunque esto puede variar según la implementación): 
+ [PAN](terminology.md#terms.pan): se especifica en el campo PrimaryAccountNumber 
+ [Número de secuencia PAN (PSN)](terminology.md#terms.psn): especificado en el campo PanSequenceNumber 
+ Método de derivación de claves, como la clave de sesión común (CSK), especificado en el SessionKeyDerivationAttributes
+ Modo de derivación de clave maestra (como la opción A de EMV): especificado en el MajorKeyDerivationMode
+ Datos de la transacción: una cadena de varios datos de transacciones, terminales y tarjetas, como el importe y la fecha, especificados en el campo TransactionData 
+ [Clave maestra del emisor](terminology.md#terms.imk): la clave maestra utilizada para derivar la clave de criptograma (AC) utilizada para proteger las transacciones individuales y especificada en el campo KeyIdentifier 

**Topics**
+ [Creación de datos de transacciones](#w2aac15c25c13)
+ [Relleno de datos de transacciones](#w2aac15c25c15)
+ [Ejemplos](#w2aac15c25c17)

## Creación de datos de transacciones
<a name="w2aac15c25c13"></a>

El contenido (y el orden) exactos del campo de datos de la transacción varían según la implementación y el esquema de red, pero los campos mínimos recomendados (y la secuencia de concatenación) se definen en la sección 8.1.1 del [libro 2 de EMV 4.4](https://www.emvco.com/specifications/?post_id=80377): Selección de datos. Si los tres primeros campos son importe (17.00), otro importe (0,00) y país de compra, los datos de la transacción comenzarán de la siguiente manera:
+ 000000001700 - cantidad: 12 posiciones implican un decimal de dos dígitos
+ 000000000000 - otra cantidad: 12 posiciones implican un decimal de dos dígitos
+ 0124: código de país de cuatro dígitos 
+  Datos de transacción de salida (parciales): 0000000017000000000000000124 

## Relleno de datos de transacciones
<a name="w2aac15c25c15"></a>

Los datos de las transacciones deben rellenarse antes de enviarlos al servicio. La mayoría de los esquemas utilizan el relleno ISO 9797 Método 2, en el que se añade una cadena hexadecimal 80 seguida de 00 hasta que el campo es un múltiplo del tamaño del bloque de cifrado; 8 bytes o 16 caracteres para TDES y 16 bytes o 32 caracteres para AES. La alternativa (método 1) no es tan común pero utiliza sólo 00 como caracteres de relleno. 

### Relleno ISO 9797 Método 1
<a name="w2aac15c25c15b5"></a>

 Sin relleno: 00000000170000000000000008400080008000084016051700000000093800000B03011203 (74 caracteres o 37 bytes) 

 Con relleno: 00000000170000000000000008400080008000084016051700000000093800000B03011203**000000** (80 caracteres o 40 bytes) 

### Relleno ISO 9797 Método 2
<a name="w2aac15c25c15b7"></a>

 Sin relleno: 00000000170000000000000008400080008000084016051700000000093800000B1F220103000000 (80 caracteres o 40 bytes) 

 Sin relleno: 00000000170000000000000008400080008000084016051700000000093800000B1F220103000000**8000000000000000** (88 caracteres o 44 bytes) 

## Ejemplos
<a name="w2aac15c25c17"></a>

### Visa CVN10
<a name="w2aac15c25c17b3"></a>

**Example**  
En este ejemplo, validaremos un ARQC generado con Visa. CVN10   
Si la criptografía de AWS pagos puede validar el ARQC, se devuelve un http/200. Si, entonces, el ARCQ (criptograma de solicitud de autorización) no está validado, devolverá una respuesta http/400.  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram --auth-request-cryptogram D791093C8A921769 \
--key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \
--major-key-derivation-mode EMV_OPTION_A \ 
--transaction-data 00000000170000000000000008400080008000084016051700000000093800000B03011203000000 \
--session-key-derivation-attributes='{"Visa":{"PanSequenceNumber":"01" \ 
,"PrimaryAccountNumber":"9137631040001422"}}'
```

```
{
  "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
  "KeyCheckValue": "08D7B4"
}
```

### Visa y Visa CVN18 CVN22
<a name="w2aac15c25c17b5"></a>

**Example**  
En este ejemplo, validaremos un ARQC generado con Visa CVN18 o. CVN22 Las operaciones criptográficas son las mismas entre CVN18 y, sin CVN22 embargo, los datos contenidos en los datos de las transacciones varían. En comparación con CVN10, se genera un criptograma completamente diferente incluso con las mismas entradas.  
Si la criptografía de AWS pagos es capaz de validar el ARQC, se devuelve un http/200. Si el ARCQ no está validado, devolverá un http/400.  

```
$ aws payment-cryptography-data verify-auth-request-cryptogram \ 
--auth-request-cryptogram 61EDCC708B4C97B4
--key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk \ 
--major-key-derivation-mode EMV_OPTION_A 
--transaction-data 00000000170000000000000008400080008000084016051700000000093800000B1F22010300000000000 \
00000000000000000000000000000000000000000008000000000000000
--session-key-derivation-attributes='{"EmvCommon":{"ApplicationTransactionCounter":"000B", \
"PanSequenceNumber":"01","PrimaryAccountNumber":"9137631040001422"}}'
```

```
{
  "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/pw3s6nl62t5ushfk",
  "KeyCheckValue": "08D7B4"
}
```

# Generar y verificar MAC
<a name="crypto-ops-mac"></a>

Los códigos de autenticación de mensajes (MAC) se utilizan normalmente para autentificar la integridad de un mensaje (independientemente de si se ha modificado). Los hashes criptográficos como el HMAC (código de autenticación de mensajes basado en hash), el CBC-MAC y el CMAC (código de autenticación de mensajes basado en cifrado) proporcionan una seguridad adicional al remitente del MAC mediante el uso de la criptografía. El HMAC se basa en funciones de hash, mientras que el CMAC se basa en cifrados por bloques. El servicio también admite los ISO9797 algoritmos 1 y 3, que son tipos de CBC-. MACs 

Todos los algoritmos MAC de este servicio combinan una función hash criptográfica y una clave secreta compartida. Reciben un mensaje y una clave secreta, como el material clave de una llave, y devuelven una etiqueta o mac únicos. Si cambia incluso un carácter del mensaje, o si la clave secreta cambia, la etiqueta resultante es totalmente diferente. Al requerir una clave secreta, la criptografía MACs también proporciona autenticidad; es imposible generar un mac idéntico sin la clave secreta. MACs Las criptográficas a veces se denominan firmas simétricas, porque funcionan como firmas digitales, pero utilizan una sola clave tanto para la firma como para la verificación. 

AWS La criptografía de pagos admite varios tipos de: MACs

**ISO9797 ALGORITMO 1**  
Denotado por `KeyUsage` ISO9797 \$1ALGORITHM1. Si el campo no es un múltiplo del tamaño de un bloque (8 bytes/16 caracteres hexadecimales para el TDES, 16 bytes/32 caracteres para el AES), la criptografía de pago aplica automáticamente el método de relleno 1. AWS ISO9797 Si necesita otros métodos de relleno, puede aplicarlos antes de llamar al servicio.

**ISO9797 ALGORITMO 3 (Retail MAC)**  
Denotado por `KeyUsage` ISO9797 \$1ALGORITHM3. Se aplican las mismas reglas de relleno que en el Algoritmo 1

**ISO9797 ALGORITMO 5 (CMAC)**  
Denotado por \$1M6\$1ISO\$19797\$15\$1CMAC\$1KEY `KeyUsage` TR31

**HMAC**  
Denotado por `KeyUsage` TR31 \$1M7\$1HMAC\$1KEY, incluidos HMAC\$1, HMAC\$1, HMAC\$1 y HMAC\$1 SHA224 SHA256 SHA384 SHA512

**AS2805.4.1 MAC**  
Denotado por `KeyUsage` \$1M0\$1ISO\$116609\$1MAC\$1KEY. TR31 Para obtener más información sobre, consulte AS2805 [AS2805](advanced.regional.as2805.md)

**DUKPT MAC**  
El DUKPT MAC se utiliza normalmente para confirmar el origen y la carga útil de los mensajes en los terminales de pago. to/from Obtiene una clave mediante técnicas de derivación DUKPT y, a continuación, realiza el MAC. Las claves utilizadas con esta opción se indican con \$1B0\$1BASE\$1DERIVATION\$1KEY. `KeyUsage` TR31 

**EMV MAC**  
En la documentación de EMV, por lo general, se hace referencia a EMV MAC como clave de integridad. Deriva una clave mediante técnicas de derivación EMV y, a continuación, utiliza \$1 internamente. ISO9797 ALGORITHM3 Por lo general, se utiliza para enviar los scripts del emisor a una tarjeta con chip para su reprogramación. Las claves utilizadas con esta opción se indican con \$1E2\$1EMV\$1MKEY\$1INTEGRITY`KeyUsage`. TR31 Si está enviando un script y actualizando un pin fuera de línea, asegúrese de que realice estas dos operaciones. [GenerateMacEmvPinChange](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMacEmvPinChange) 

**Topics**
+ [Generar MAC](generate-mac.md)
+ [Verificar MAC](verify-mac.md)

# Generar MAC
<a name="generate-mac"></a>

La API Generate MAC se utiliza para autenticar los datos relacionados con las tarjetas, como rastrear los datos de una banda magnética de tarjetas, mediante el uso de claves criptográficas conocidas para generar un MAC (código de autenticación de mensajes) para la validación de los datos entre las partes remitentes y receptoras. Los datos utilizados para generar el MAC incluyen los datos de los mensajes, la clave de cifrado MAC secreta y el algoritmo MAC para generar un valor MAC único para la transmisión. La parte receptora del MAC utiliza los mismos datos del mensaje MAC, la misma clave de cifrado MAC y el mismo algoritmo para reproducir otro valor MAC con fines de comparación y autenticación de datos. Aunque cambie un carácter del mensaje o la clave MAC utilizada para la verificación no sea idéntica, el valor MAC resultante será diferente. La API admite las claves de cifrado MAC HMAC y EMV MAC (que utilizan una clave MAC estática y una clave DUKPT derivada) del algoritmo 1 de la ISO 9797-1 y el algoritmo 3 de la ISO 9797-1.

El valor de entrada para `message-data` debe ser un dato hexBinary.

Para obtener más información sobre todas las opciones de esta API, consulte y. [GenerateMac[VerifyMac](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_VerifyMac.html)](https://docs.aws.amazon.com/payment-cryptography/latest/DataAPIReference/API_GenerateMac.html)

El parámetro opcional mac-length te permite truncar el valor de salida (aunque esto también se puede hacer dentro del código). Una longitud de 8 se refiere a 8 bytes o 16 caracteres hexadecimales.

Las claves MAC se pueden crear con criptografía AWS de pago mediante una llamada [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html)o importarse mediante una llamada [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html). 

**nota**  
Los algoritmos CMAC y HMAC no requieren relleno. Todos los demás requieren que los datos se rellenen hasta el tamaño de bloque del algoritmo, que es múltiplos de 8 bytes (16 caracteres hexadecimales) para el TDES y 16 bytes (32 caracteres hexadecimales) para el AES. 

**Topics**
+ [Genera HMAC](#generate-mac-hmac)
+ [Genere el MAC mediante el algoritmo ISO 9797-1 3](#generate-mac-iso9797-alg3)
+ [Genere MAC mediante CMAC](#generate-mac-cmac)
+ [Genere MAC mediante DUKPT CMAC](#generate-mac-dukpt-cmac)

## Genera HMAC
<a name="generate-mac-hmac"></a>

En este ejemplo, generaremos un HMAC (código de autenticación de mensajes basado en hash) para la autenticación de los datos de la tarjeta mediante el algoritmo HMAC `HMAC_SHA256` y la clave de cifrado HMAC. La clave debe estar KeyUsage configurada en `TR31_M7_HMAC_KEY` y KeyModesOfUse en. `Generate` La longitud del hash (por ejemplo, 256) se define cuando se crea la clave y no se puede modificar. 

El parámetro opcional mac-length recortará el MAC de salida, aunque también se puede realizar fuera del servicio. Este valor está en bytes, por lo que un valor de 16 esperará una cadena hexadecimal de 32 de longitud.

**Example**  

```
$ aws payment-cryptography-data generate-mac \ 
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 \ 
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \
    --generation-attributes Algorithm=HMAC
```

```
           
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
    "KeyCheckValue": "2976E7",
    "Mac": "ED87F26E961C6D0DDB78DA5038AA2BDDEA0DCE03E5B5E96BDDD494F4A7AA470C"
}
```

## Genere el MAC mediante el algoritmo ISO 9797-1 3
<a name="generate-mac-iso9797-alg3"></a>

En este ejemplo, generaremos un MAC utilizando el algoritmo 3 de la norma ISO 9797-1 (MAC minorista) para la autenticación de los datos de las tarjetas. La clave debe estar KeyUsage configurada en `TR31_M3_ISO_9797_3_MAC_KEY` y KeyModesOfUse en. `Generate` 

**Example**  

```
$ aws payment-cryptography-data generate-mac \ 
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h \ 
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ 
    --generation-attributes="Algorithm=ISO9797_ALGORITHM3"
```

```
           
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/kwapwa6qaifllw2h",
    "KeyCheckValue": "2976EA",
    "Mac": "A8F7A73DAF87B6D0"
}
```

## Genere MAC mediante CMAC
<a name="generate-mac-cmac"></a>

El CMAC se usa más comúnmente cuando las claves son AES, pero también es compatible con el TDES. En este ejemplo, generaremos un MAC mediante el CMAC (algoritmo 5 de la norma ISO 9797-1) para la autenticación de los datos de la tarjeta con una clave AES. La clave debe estar KeyUsage configurada en y en. `TR31_M6_ISO_9797_5_CMAC_KEY` KeyModesOfUse `Generate` 

**Example**  

```
$ aws payment-cryptography-data generate-mac \ 
    --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \ 
    --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" \ 
    --generation-attributes Algorithm="CMAC"
```

```
           
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "C1EB8F",
    "Mac": "1F8C36E63F91E4E93DF7842BF5E2E5F7"
}
```

## Genere MAC mediante DUKPT CMAC
<a name="generate-mac-dukpt-cmac"></a>

En este ejemplo, generaremos una MAC utilizando la DUKPT (clave única derivada por transacción) con la CMAC para la autenticación de los datos de la tarjeta. La clave debe estar KeyUsage establecida `TR31_B0_BASE_DERIVATION_KEY` y establecida en KeyModesOfUse `DeriveKey` true. Las claves DUKPT obtienen una clave única para cada transacción mediante una clave de derivación básica (BDK) y un número de serie de la clave (KSN). 



**Example**  

```
$ aws payment-cryptography-data generate-mac --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 --message-data "3b313038383439303031303733393431353d32343038323236303030373030303f33" --generation-attributes="DukptCmac={KeySerialNumber="932A6E954ABB32DD00000001",Direction=BIDIRECTIONAL}"
```

```
       
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
    "KeyCheckValue": "C1EB8F"
}
```

# Verificar MAC
<a name="verify-mac"></a>

Verifique que la MAC API se utiliza para verificar MAC (código de autenticación de mensajes) para la autenticación de datos relacionados con tarjetas. Debe utilizar la misma clave de cifrado utilizada durante la generación del MAC para reproducir el valor MAC para la autenticación. La clave de cifrado MAC se puede crear con criptografía de AWS pago mediante una llamada [CreateKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_CreateKey.html)o importarse mediante una llamada. [ImportKey](https://docs.aws.amazon.com/payment-cryptography/latest/APIReference/API_ImportKey.html) La API admite las claves de cifrado DUKPT MAC, HMAC y EMV MAC para esta operación.

Si el valor se verifica, el parámetro de respuesta `MacDataVerificationSuccessful` devolverá `Http/200`, en caso contrario `Http/400` con un mensaje indicando que `Mac verification failed`.

**Topics**
+ [Verifica HMAC](#verify-mac-hmac)
+ [Verifique el MAC mediante DUKPT CMAC](#verify-mac-dukpt-cmac)

## Verifica HMAC
<a name="verify-mac-hmac"></a>

En este ejemplo, verificaremos un código HMAC (código de autenticación de mensajes basado en hash) para la autenticación de los datos de la tarjeta utilizando el algoritmo HMAC `HMAC_SHA256` y la clave de encriptación HMAC. La clave debe estar KeyUsage configurada `TR31_M7_HMAC_KEY` y establecida en KeyModesOfUse `Verify` true. 

**Example**  

```
$ aws payment-cryptography-data verify-mac \ 
     --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6 \ 
     --message-data "3b343038383439303031303733393431353d32343038323236303030373030303f33" \ 
     --mac ED87F26E961C6D0DDB78DA5038AA2BDDEA0DCE03E5B5E96BDDD494F4A7AA470C \ 
     --verification-attributes Algorithm=HMAC_SHA256
```

```
       
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/qnobl5lghrzunce6",
    "KeyCheckValue": "2976E7"
}
```

## Verifique el MAC mediante DUKPT CMAC
<a name="verify-mac-dukpt-cmac"></a>

En este ejemplo, verificaremos un MAC mediante la DUKPT (clave única derivada por transacción) con la CMAC para la autenticación de los datos de la tarjeta. La clave debe estar KeyUsage establecida `TR31_B0_BASE_DERIVATION_KEY` y establecida en KeyModesOfUse `DeriveKey` true. Las claves DUKPT obtienen una clave única para cada transacción mediante una clave de derivación básica (BDK) y un número de serie de la clave (KSN). El valor de DukptKeyVariant debe coincidir entre el remitente y el destinatario. Por lo general, REQUEST se usa del terminal al servidor, VERIFY del servidor al terminal y BIDIRECTIONAL cuando se usa una sola clave en ambas direcciones. 

**Example**  

```
$ aws payment-cryptography-data verify-mac \ 
     --key-identifier arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi \ 
     --message-data "3b343038383439303031303733393431353d32343038323236303030373030303f33" \ 
     --mac D8E804EE74BF1D909A2C01C0BDE8EF34 \ 
     --verification-attributes DukptCmac='{"KeySerialNumber":"932A6E954ABB32DD00000001","DukptKeyVariant":"BIDIRECTIONAL"}'
```

```
       
{
    "KeyArn": "arn:aws:payment-cryptography:us-east-2:111122223333:key/tqv5yij6wtxx64pi",
    "KeyCheckValue": "C1EB8F"
}
```

# Claves válidas para las operaciones criptográficas
<a name="crypto-ops-validkeys-ops"></a>

Algunas claves solo se pueden utilizar para determinadas operaciones. Además, algunas operaciones pueden limitar los modos de uso de las claves. Consulte la tabla siguiente para las combinaciones permitidas. 

**nota**  
Ciertas combinaciones, si bien están permitidas, pueden crear situaciones inutilizables, como generar códigos CVV `(generate)` pero luego no pueden verificarlos `(verify)`. 

**Topics**
+ [GenerateCardData](#w2aac15c31b9)
+ [VerifyCardData](#w2aac15c31c11)
+ [GeneratePinData (para VISA/ABA esquemas)](#w2aac15c31c15)
+ [GeneratePinData (para) `IBM3624`](#w2aac15c31c17)
+ [VerifyPinData (para esquemas) VISA/ABA](#w2aac15c31c21)
+ [VerifyPinData (para) `IBM3624`](#w2aac15c31c23)
+ [Descifrado de datos](#w2aac15c31c27)
+ [Cifrado de datos](#w2aac15c31c33)
+ [Traducir datos PIN](#w2aac15c31c39)
+ [Generar/verificar el MAC](#crypto-ops-validkeys.generatemac)
+ [GenerateMacEmvPinChange](#crypto-ops-validkeys.generatemacemvpinchange)
+ [VerifyAuthRequestCryptogram](#w2aac15c31c51)
+ [Clave de Importación/Exportación](#crypto-ops-validkeys.importexport)
+ [Tipos de claves sin utilizar](#w2aac15c31c57)

## GenerateCardData
<a name="w2aac15c31b9"></a>


| Punto de conexión de la API | Operación criptográfica o algoritmo | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | --- | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1C0\$1CARD\$1KEY\$1VERIFICATION\$1KEY |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1 Generate = true \$1,\$1 Generate = true, Verify = true \$1 | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1C0\$1CARD\$1CLAVE DE VERIFICACIÓN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1 Generate = true \$1,\$1 Generate = true, Verify = true \$1 | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E6\$1EMV\$1MKEY\$1OTHER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1= verdadero\$1 DeriveKey  | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E4\$1EMV\$1MKEY\$1DYNAMIC\$1NUMBERS |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1= verdadero\$1 DeriveKey  | 
| GenerateCardData |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E6\$1EMV\$1MKEY\$1OTHER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1= verdadero\$1 DeriveKey  | 

## VerifyCardData
<a name="w2aac15c31c11"></a>


| Operación criptográfica o algoritmo | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1C0\$1CARD\$1CLAVE DE VERIFICACIÓN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1 Generate = true \$1,\$1 Generate = true, Verify = true \$1 | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1C0\$1CARD\$1CLAVE DE VERIFICACIÓN |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1 Generate = true \$1,\$1 Generate = true, Verify = true \$1 | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E6\$1EMV\$1MKEY\$1OTHER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1= verdadero\$1 DeriveKey  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E4\$1EMV\$1MKEY\$1DYNAMIC\$1NUMBERS |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1= verdadero\$1 DeriveKey  | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | TR31\$1E6\$1EMV\$1MKEY\$1OTHER |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | \$1= verdadero\$1 DeriveKey  | 

## GeneratePinData (para VISA/ABA esquemas)
<a name="w2aac15c31c15"></a>

`VISA_PIN or VISA_PIN_VERIFICATION_VALUE`


| Tipo de clave | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  Clave de cifrado de PIN  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Clave de generación de PIN  |  TR31\$1V2\$1VISA\$1PIN\$1VERIFICATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## GeneratePinData (para) `IBM3624`
<a name="w2aac15c31c17"></a>

`IBM3624_PIN_OFFSET,IBM3624_NATURAL_PIN,IBM3624_RANDOM_PIN, IBM3624_PIN_FROM_OFFSET)`


| Tipo de clave | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  Clave de cifrado de PIN  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  Para \$1NATURAL\$1PIN, \$1RANDOM\$1PIN, \$1PIN\$1FROM\$1OFFSET IBM3624 IBM3624 IBM3624 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) Para IBM3624 \$1PIN\$1OFFSET [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | 
|  Clave de generación de PIN  |  TR31\$1V1\$1 \$1PIN\$1CLAVE DE VERIFICACIÓN IBM3624  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## VerifyPinData (para esquemas) VISA/ABA
<a name="w2aac15c31c21"></a>

`VISA_PIN`


| Tipo de clave | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  Clave de cifrado de PIN  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Clave de generación de PIN  |  TR31\$1V2\$1VISA\$1PIN\$1VERIFICATION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## VerifyPinData (para) `IBM3624`
<a name="w2aac15c31c23"></a>

`IBM3624_PIN_OFFSET,IBM3624_NATURAL_PIN,IBM3624_RANDOM_PIN, IBM3624_PIN_FROM_OFFSET)`


| Tipo de clave | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  Clave de cifrado de PIN  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  Para \$1NATURAL\$1PIN, \$1RANDOM\$1PIN, \$1PIN\$1FROM\$1OFFSET IBM3624 IBM3624 IBM3624 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | 
|  Clave de verificación de PIN  |  TR31\$1V1\$1 \$1PIN\$1CLAVE DE VERIFICACIÓN IBM3624  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## Descifrado de datos
<a name="w2aac15c31c27"></a>


| Tipo de clave | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  DUKPT  |  TR31\$1B0\$1CLAVE DE DERIVACIÓN BASE  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  EMV  |  TR31\$1E1\$1EMV\$1MKEY\$1CONFIDENCIALIDAD TR31\$1E6\$1EMV\$1MKEY\$1OTHER  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | 
|  RSA  |  TR31\$1D1\$1CLAVE ASIMÉTRICA PARA EL CIFRADO DE DATOS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Claves simétricas  |  TR31\$1D0\$1KEY\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## Cifrado de datos
<a name="w2aac15c31c33"></a>


| Tipo de clave | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  DUKPT  |  TR31\$1B0\$1BASE\$1CLAVE DE DERIVACIÓN  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  EMV  |  TR31\$1E1\$1EMV\$1MKEY\$1CONFIDENCIALIDAD TR31\$1E6\$1EMV\$1MKEY\$1OTHER  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  | 
|  RSA  |  TR31\$1D1\$1CLAVE ASIMÉTRICA PARA EL CIFRADO DE DATOS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Claves simétricas  |  TR31\$1D0\$1KEY\$1SYMMETRIC\$1DATA\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## Traducir datos PIN
<a name="w2aac15c31c39"></a>


| Dirección | Tipo de clave | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | --- | 
|  Origen de datos de entrada  |  DUKPT  |  TR31\$1B0\$1BASE\$1CLAVE DE DERIVACIÓN  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Origen de datos de entrada  |  no DUKPT (PEK, AWK, IWK, etc.)  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Objetivo de datos de salida  |  DUKPT  |  TR31\$1B0\$1BASE\$1CLAVE DE DERIVACIÓN  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Objetivo de datos de salida  |  no DUKPT (PEK, IWK, AWK, etc)  |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## Generar/verificar el MAC
<a name="crypto-ops-validkeys.generatemac"></a>

 Las claves MAC se utilizan para crear hashes criptográficos de varios datos. message/body No se recomienda crear una clave con modos de uso de claves limitados, ya que no podrá realizar la operación de coincidencia. Sin embargo, puede import/export utilizar una clave con una sola operación si el otro sistema está diseñado para realizar la otra mitad del par de operaciones. 


| Uso permitido de claves | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  Clave MAC   |  TR31\$1M1\$1ISO\$19797\$11\$1MAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Clave MAC (MAC minorista)   |  TR31\$1M1\$1ISO\$19797\$13\$1MAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Clave MAC (CMAC)   |  TR31\$1M6\$1ISO\$19797\$15\$1CMAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Clave MAC (HMAC)   |  TR31\$1M7\$1HMAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Tecla MAC () AS2805   |  TR31\$1M0\$1ISO\$116609\$1MAC\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## GenerateMacEmvPinChange
<a name="crypto-ops-validkeys.generatemacemvpinchange"></a>

 GenerateMacEmvPinChange combina la generación de MAC y el cifrado de PIN para las operaciones de cambio de PIN fuera de línea de EMV. Esta operación requiere dos tipos de claves diferentes: una clave de integridad para la generación de MAC y una clave de confidencialidad para el cifrado de PIN. 


| Tipo de clave | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  Clave de integridad de mensajería segura   |  TR31\$1E2\$1EMV\$1MKEY\$1INTEGRITY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Clave de confidencialidad de mensajería segura   |  TR31\$1E1\$1EMV\$1MKEY\$1CONFIDENCIALITY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  PIN PEK (clave de cifrado PIN) actual   |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Nuevo PIN PEK (clave de cifrado PIN)   |  TR31\$1P0\$1PIN\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Clave ARQC   Solo se aplica a los esquemas de derivación de Visa y Amex.   |  TR31\$1E0\$1EMV\$1MKEY\$1APP\$1CRYPTOGRAMS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## VerifyAuthRequestCryptogram
<a name="w2aac15c31c51"></a>


| Uso permitido de claves | Opción EMV | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  TR31\$1E0\$1EMV\$1MKEY\$1APP\$1CRYPTOGRAMS  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## Clave de Importación/Exportación
<a name="crypto-ops-validkeys.importexport"></a>


| Operation Type (Tipo de operación) | Uso permitido de claves | Algoritmo clave permitido | Combinación permitida de modos de uso clave | 
| --- | --- | --- | --- | 
|  Llave de embalaje TR-31  |  TR31\$1K1\$1KEY\$1BLOCK\$1PROTECTION\$1KEY TR31\$1K0\$1KEY\$1ENCRYPTION\$1KEY  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Importación de una CA de confianza  |  TR31\$1S0\$1CLAVE ASIMÉTRICA PARA FIRMA DIGITAL  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Importación de un certificado de clave pública para el cifrado asimétrico  |  TR31\$1D1\$1ASYMMETRIC\$1KEY\$1FOR\$1DATA\$1ENCRYPTION  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 
|  Clave utilizada para algoritmos de acuerdo de claves como el ECDH  |  TR31\$1K3\$1ASYMMETRIC\$1KEY\$1FOR\$1KEY\$1AGREEMENT  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/payment-cryptography/latest/userguide/crypto-ops-validkeys-ops.html) | 

## Tipos de claves sin utilizar
<a name="w2aac15c31c57"></a>

La criptografía de AWS pagos no utiliza actualmente los siguientes tipos de claves
+  TR31\$1P1\$1PIN\$1GENERATION\$1KEY 