Protected Card Data
Protected Card Data
Sensitive card data should be protected in line with PCI DSS requirements.
An example of how to send protected card data is shown below. The XML encoded structure for card data is:
<PlainCardData>
<PAN>9913330089010574</PAN>
<CardSeqNb>00</CardSeqNb>
<FctvDt>2006-01</FctvDt>
<XpryDt>2016-12</XpryDt>
<SvcCd>201</SvcCd>
<Trck2>9913330089010574D161220101064064</Trck2>
</PlainCardData>Once unnecessary spaces and carriage returns are removed, this XML encoded structure with the padding is:
<PlainCardData><PAN>9913330089010574</PAN><CardSeqNb>00</CardSeqNb><FctvDt>2006-01</FctvDt><XpryDt>2016-12</XpryDt><SvcCd>201</SvcCd><Trck2>9913330089010574D161220101064064</Trck2></PlainCardData>Using BDK (Base Derivation Key) 37233E89 0B0104E9 BC943D0E 45EAE5A7 with Key Serial Number 398725A501 E290200017the data encryption key A75D20F7 04517545 3E29259D 3B08A72A can be derived. Under Initialisation Vector A27BB46D1C306E09 using algorithm 3DES-112 CBC, the encrypted version of the padded card data (hex representation) is:
CB8548F2F3633C4DE9718E0BF185E874F95AD40BEE69BFCFEAFB7C57C109985FBEBAA76045D42F0E2E8F47D26431B42D7FDF30A3F921B65C6698DECE08C9A44483814673BFDE05D22B78332479665C8C99BB371179944C24631627DDBD57E8DB729E180C31B0D134AD9DF8B6534A4A31F5D43A40746633FDE6EA9DC249BA5E9B33E7C5FE46E64AE3D1FBC512E97AB479F9AF018C215C0DFB56A9E277C7611139D73D1E6927587AAB65AFF8121F2F0414E3ACB13449C9C25A890D927B9BE0DC9DE28E67DACAA9A133
This should be encoded as Base64:
y4VI8vNjPE3pcY4L8YXodPla1Avuab/P6vt8V8EJmF++uqdgRdQvDi6PR9JkMbQtf98wo/khtlxmmN7OCMmkRIOBRnO/3gXSK3gzJHlmXIyZuzcReZRMJGMWJ929V+jbcp4YDDGw0TStnfi2U0pKMfXUOkB0ZjP95uqdwkm6Xpsz58X+RuZK49H7xRLperR5+a8BjCFcDftWqeJ3x2EROdc9HmknWHqrZa/4Eh8vBBTjrLE0ScnCWokNknub4Nyd4o5n2sqpoTM=
The resulting XML encoded structure is:
<Card>
<PrtctdCardData>
<CnttTp>EVLP</CnttTp>
<EnvlpdData>
<Rcpt>
<KEK>
<KEKId>
<KeyId>SpecV1TestKey</KeyId>
<KeyVrsn>2010060715</KeyVrsn>
<DerivtnId>OYclpQE=</DerivtnId>
</KEKId>
<KeyNcrptnAlgo>
<Algo>DKP9</Algo>
</KeyNcrptnAlgo>
<NcrptdKey>4pAgABc=</NcrptdKey>
</KEK>
</Rcpt>
<NcrptdCntt>
<CnttTp>DATA</CnttTp>
<CnttNcrptnAlgo>
<Algo>E3DC</Algo>
<Param>
<InitlstnVctr>onu0bRwwbgk=</InitlstnVctr>
</Param>
</CnttNcrptnAlgo>
<NcrptdData>y4VI8vNjPE3pcY4L8YXodPla1Avuab/P6vt8V8EJmF++uqdgRdQvDi6PR9JkMbQtf98w
o/khtlxmmN7OCMmkRIOBRnO/3gXSK3gzJHlmXIyZuzcReZRMJGMWJ929V+jbcp4YDDGw0TStnfi2U0pKMfX
UOkB0ZjP95uqdwkm6Xpsz58X+RuZK49H7xRLperR5+a8BjCFcDftWqeJ3x2EROdc9HmknWHqrZa/4Eh8vBB
TjrLE0ScnCWokNknub4Nyd4o5n2sqpoTM=</NcrptdData>
</NcrptdCntt>
</EnvlpdData>
</PrtctdCardData>
</Card>