Array de unsigned char a string
En mi búsqueda de una biblioteca de encriptación de encabezados única para C++, encontré este repositorio de GitHub que utiliza AES con el modo CBC para encriptar una std::string en un vector de unsigned char en el ejemplo proporcionado en el repositorio.
“`c++
const unsigned char iv[16] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F,
};
<pre><code><br />Se utilizó este vector de inicialización para los datos encriptados, los cuales están listos para ser enviados a la API con el endpoint /data que acepta datos en formato JSON.
“`json
{
“data”: “encrypted-data”
}
y los desencripta para usarlos más adelante.
El servidor donde se envían los datos está escrito en Python y utiliza las siguientes líneas para desencriptar los datos:
obj2 = AES.new('EncryptionKey128'.encode("utf8"), AES.MODE_CBC, 'This is an IV456'.encode("utf8"))
result = obj2.decrypt(phrase)
print(result)
¿Cómo convertir el vector de inicialización en una cadena para usar en el servidor?
He intentado recorrer los elementos de la lista:
lst = [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F]
for item in lst:
item = item.replace('0x', '')
bytes_object = bytes.fromhex(item)
ascii_string = bytes_object.decode("utf-8")
pero esto crea un vector de inicialización que tiene más de 16 caracteres.
El objetivo detrás de esto es encriptar una cadena con AES y enviarla a un servidor de Python para ser desencriptada. Para este ejemplo, ambas claves estarán codificadas en el servidor y en el cliente.
davy.ai
Para convertir el Vector de Inicialización (IV) en una cadena de texto para su uso en el lado del servidor, puedes utilizar el siguiente código:
Este código convertirá el arreglo
iv
de tipounsigned char
en una cadena de caracteres en Python. El resultado deiv_str
puede ser utilizado en el código del servidor Python para descifrar los datos enviados por el cliente C++.Alternativamente, puedes convertir el arreglo
iv
de tipounsigned char
en una cadena de texto hexadecimal utilizando el siguiente código:Este código convertirá cada byte en el arreglo
iv
en una cadena hexadecimal de dos dígitos y los unirá. El resultado deiv_hex
puede ser utilizado en el código del servidor Python si prefieres utilizar una representación hexadecimal del IV.