DINAMO Networks ¡Ahora es una empresa de ciberseguridad deDINAMO !
NET API
HSM DINAMO
Cargando...
Buscando...
No se han encontrado entradas
enc_dec_gcm.cs

Ejemplo de cifrado y descifrado simétrico utilizando el modo autenticado GCM.

Véase la nota sobre ejemplos.
using System;
using System.Collections.Generic;
using System.Text;
using Dinamo.Hsm;
namespace TesteNF
{
class Program
{
static void Main(string[] args)
{
DinamoClient dinamo = new DinamoClient();
dinamo.Connect( "127.0.0.1",
"master",
"12345678" );
//Nome da chave AES 256 dentro do HSM
string keyId = "aes256";
//O IV do modo GCM deve ter AES_GCM_MIN_IV_LEN (12) bytes.
byte[] iv = new byte[DinamoApi.AES_GCM_MIN_IV_LEN]{ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C };
//Dado original
byte[] originalData = Encoding.ASCII.GetBytes("asdfasdfasdfasdfasdfas");
//GCM não faz padding, porém acrescenta ao final do dado cifrado uma tag de
//autenticação de DN_GCM_MODE_TAG_LEN bytes, portanto o buffer precisa desse espaço extra.
byte[] dataToEncrypt = new byte[originalData.Length + DinamoApi.DN_GCM_MODE_TAG_LEN];
//Bloco que sera encriptado. Estes dados serao sobrescritos.
Array.Copy(originalData, dataToEncrypt, originalData.Length);
int dataToEncryptLen = originalData.Length;
dinamo.Encrypt( keyId,
IntPtr.Zero,
true,
iv,
dataToEncrypt,
ref dataToEncryptLen,
dataToEncrypt.Length);
dinamo.Decrypt( keyId,
IntPtr.Zero,
true,
iv,
dataToEncrypt,
ref dataToEncryptLen );
Console.Out.WriteLine("Dado decriptado:\n {0}", System.Text.Encoding.Default.GetString(dataToEncrypt));
Console.In.ReadLine();
}
}
}
Classe de baixo nível para acesso ao HSM. Para utilizar essa classe é necessário o entendimento mais ...
Definição DinamoApi.cs:15
const Int32 AES_GCM_MIN_IV_LEN
Definição DinamoApi.cs:920
const Int32 DN_GCM_MODE_TAG_LEN
Definição DinamoApi.cs:926
Classe de API para acesso às funcionalidades do HSM Dinamo. Nessa classe é possível programar utiliza...
Definição DinamoClient.cs:93
MODE_TYPE
Modo de operação de criptografia de bloco utilizado por Encrypt(IntPtr, IntPtr, bool,...
Definição DinamoClient.cs:446
PADDING_TYPE
Definição DinamoClient.cs:466
void Encrypt(IntPtr hKey, bool Final, byte[] byData, ref int DataLen, int BufferLen)
Encrypt blocos ou arquivos passando a referencia da chave. Utiliza o mode/padding default,...
Definição DinamoClient.cs:3280
void Decrypt(string strKeyId, IntPtr hHash, bool Final, byte[] byData, ref int DataLen)
Decripta um hash, dado geral ou um arquivo.
Definição DinamoClient.cs:3625
void Connect(string User, string Password)
Estabelece uma conexão cifrada com o HSM utilizando as configurações de load balance.
Definição DinamoClient.cs:606
Namespace que denota um conjunto de funções para acesso ao HSM Dinamo e suas respectivas exceptions.
Definição DinamoClient.cs:12