Saltearse al contenido

Criptografía

Toda la comunicación entre AnnA y el cliente se realiza con cifrado 3DES-CBC (Cipher Block Chaining) con un tamaño de bloque de 64 y un tamaño de clave de 192 bytes.

A continuación, algunos ejemplos de implementación para encriptación y desencriptación:

public static string Encrypt3DES(string data, string key, string iv)
{
byte[] bytes = Encoding.UTF8.GetBytes(data);
byte[] decodedKey = Convert.FromBase64String(key);
byte[] decodedIv = Convert.FromBase64String(iv);
var cryptoServiceProvider = new TripleDESCryptoServiceProvider()
{
Key = decodedKey,
IV = decodedIv,
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
};
byte[] encrypted = cryptoServiceProvider.CreateEncryptor().TransformFinalBlock(bytes, 0, bytes.Length);
cryptoServiceProvider.Clear();
return Convert.ToBase64String(encrypted);
}
public static string Decrypt3DES(string data, string key, string iv)
{
byte[] encryptedBytes = Convert.FromBase64String(data);
byte[] decodedKey = Convert.FromBase64String(key);
byte[] decodedIv = Convert.FromBase64String(iv);
var cryptoServiceProvider = new TripleDESCryptoServiceProvider()
{
Key = decodedKey,
IV = decodedIv,
Mode = CipherMode.CBC,
Padding = PaddingMode.PKCS7
};
byte[] bytes = cryptoServiceProvider.CreateDecryptor().TransformFinalBlock(encryptedBytes, 0, encryptedBytes.Length);
cryptoServiceProvider.Clear();
return Encoding.UTF8.GetString(bytes);
}
public static string GenerateIV()
{
var cryptoServiceProvider = new TripleDESCryptoServiceProvider();
cryptoServiceProvider.GenerateIV();
return Convert.ToBase64String(cryptoServiceProvider.IV);
}