Como criptografar as informações do pagamento

Nesta seção explicamos como realizar a criptografia dos dados de pagamento

No conteúdo do JSON no endpoint de "Processamento da Transação de Pagamento" existe alguns dados sensíveis do cliente, e para atender ao PCI DSS iremos utilizar o processo de criptografia conhecido como AES 256, que é um padrão internacional de criptografia que garante uma segurança de dados, reconhecida pelo governo.

Como criptografar?

Para realizar a criptografia será utilizado a Chave Pública disponibilizada pela equipe da Fast Shop, basta entrar em contato conosco.

Após é necessário converter o resultado para Base64, com isto não teremos problemas com caractere inválido no JSON.

Abaixo consta um exemplo do código em .Net (dotNet) de como criptografar:

using APIAuthentication.Interfaces;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.OpenSsl;
using Org.BouncyCastle.Security;
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;

namespace APIAuthentication.Helpers{
    public class RsaHelper : IRsaHelper
    {
        private readonly RSACryptoServiceProvider _privateKey;
        private readonly RSACryptoServiceProvider _publicKey;
        
        public RsaHelper()
        {
            string public_pem = @"Keys\pos.pub.pem";
            _publicKey = GetPublicKeyFromPemFile(public_pem);
        }

        public string Encrypt(string text)
        {
            var encryptedBytes = _publicKey.Encrypt(Encoding.UTF8.GetBytes(text), false);
            return Convert.ToBase64String(encryptedBytes);
        }

        private RSACryptoServiceProvider GetPublicKeyFromPemFile(String filePath)
        {
            string appPath = AppDomain.CurrentDomain.BaseDirectory;
            string path = Path.Combine(appPath, filePath);
            using (TextReader publicKeyTextReader = new StringReader(File.ReadAllText(path)))
            {
                RsaKeyParameters publicKeyParam = (RsaKeyParameters)new PemReader(publicKeyTextReader).ReadObject();
                RSAParameters rsaParams = DotNetUtilities.ToRSAParameters((RsaKeyParameters)publicKeyParam);
                RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
                csp.ImportParameters(rsaParams);
                return csp;
            }
        }
    }
}

Last updated

Was this helpful?