NET API
HSM Dinamo
Cargando...
Buscando...
No se han encontrado entradas
rsa_enc_dec.cs

Ejemplo de cifrado y descifrado RSA directo.

Véase la nota sobre ejemplos.
usando System;
usando System.IO;
utilizando Dinamo.Hsm;
namespace RSAEncDec
{
clase Programa
{
static void Main(string[] args)
{
cadena dirección = "127.0.0.1";
string usuario = "maestro";
cadena pass = "12345678";
DinamoClient hsm = nuevo DinamoClient();
/*
Se conecta al HSM
*/
hsm.Conectar(dirección, usuario, pass);
/*
Genera una clave de prueba
*/
cadena keyId = "key_id";
IntPtr keyHandle = hsm.GenerateKey(keyId,
DinamoClient.KEY_ALG.ALG_RSA_2048,
verdadero);
/*
Configure el búfer de encriptación. Debe tener un tamaño de bloque de
y contienen los datos que serán encriptados.
*/
byte[] data = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08 };
byte[] buffer = nuevo byte[256];
data.CopyTo(buffer, 0);
Console.WriteLine("Dados entrada(len {0}): {1}", data.Length,
BitConverter.ToString(datos));
/*
Recupera la clave pública.
*/
byte[] pubKeyData = hsm.ExportKey(keyHandle, IntPtr.Zero,
DinamoClient.BLOB_TYPE.PUBLICKEY_BLOB);
cadena pubKeyId = "rsa2048_pub";
IntPtr pubKeyHandle = hsm.ImportKey(pubKeyId, IntPtr.Zero,
pubKeyData,
DinamoClient.BLOB_TYPE.PUBLICKEY_BLOB,
DinamoClient.KEY_ALG.ALG_RSA_2048_PUB);
/*
Cifra utilizando relleno PKCS#1 v1.5 tipo 2
*/
int outDataLen = data.Length;
Console.WriteLine("OutDataLen: {0}", outDataLen);
hsm.Encrypt(pubKeyHandle, IntPtr.Zero, true, 0, null,
DinamoClient. PADDING_TYPE.PKCS1_PADDING, buffer,
ref outDataLen, buffer.Length);
Console.WriteLine("Dados encriptados (len {0}): {1}", outDataLen,
BitConverter.ToString(buffer));
/*
Descifrar utilizando relleno PKCS#1 v1.5 tipo 2
*/
outDataLen = buffer.Length;
hsm.Decrypt(keyHandle, IntPtr.Zero, true, 0, null,
DinamoClient.PADDING_TYPE.PKCS1_PADDING, buffer,
ref outDataLen);
Console.WriteLine("Dados decriptados (len {0}): {1}", outDataLen,
BitConverter.ToString(buffer));
/*
Suelte la manivela, retire la llave y desconecte
*/
hsm.DestroyKey(keyHandle);
hsm.RemoveObject(keyId);
hsm.Disconnect();
}
}
}
Clase API para acceder a las funcionalidades del HSM Dinamo. En esta clase se puede programar utilizando...
Definición DinamoClient.cs:93
CLAVE_ALG
Definición DinamoClient.cs:227
MODO_TIPO
Definición DinamoClient.cs:430
TIPO_APOYO
Definición DinamoClient.cs:437
TIPO_LOB
Definición DinamoClient.cs:449
void Encrypt(IntPtr hKey, bool Final, byte[] byData, ref int DataLen, int BufferLen)
Cifra bloques o archivos pasando la referencia de la clave. Utiliza el modo predeterminado / relleno,...
Definición DinamoClient.cs:3163
void Decrypt(cadena strKeyId, IntPtr hHash, bool Final, byte[] byData, ref int DataLen)
Desencripta un hash, datos generales o un archivo.
Definición DinamoClient.cs:3504
void DestroyKey(IntPtr hKey)
Suelte la palanca de la llave.
Definición DinamoClient.cs:1953
byte[] ExportKey(IntPtr hKey, IntPtr hKeyEncryptionKey, BLOB_TYPE BlobType)
Definición DinamoClient.cs:2648
IntPtr ImportKey(string KeyId, IntPtr hKeyEncryptionKey, byte[] byKeyBlob, BLOB_TYPE BlobType, KEY_ALG AlgId)
Definición DinamoClient.cs:2668
IntPtr GenerateKey(cadena KeyId, DinamoClient.KEY_ALG Alg, bool Exportable)
Genera una clave permanente en el HSM.
Definición DinamoClient.cs:1891
void RemoveObject(cadena ObjectId)
Elimina un objeto del HSM.
Definición DinamoClient.cs:2397
void Conectar(cadena Usuario, cadena Contraseña)
Establece una conexión cifrada con el HSM utilizando los ajustes de equilibrio de carga.
Definición DinamoClient.cs:562
void Desconectar(bool flagCerrar)
Finaliza la conexión con el HSM.
Definición DinamoClient.cs:814
Espacio de nombres que denota un conjunto de funciones para acceder al HSM Dinamo y sus respectivas excepciones.
Definición DinamoClient.cs:12