¿Por qué la configuración del texto cifrado a 21 caracteres significa que el texto plano no es nada en AES256?

0

Supongamos que tengo lo siguiente donde k es cualquier cadena de longitud

Si hago lo siguiente

var p = aes256.decrypt(k, 'XXXXXXXXXXXXXXXXXXXXX');

El valor de p siempre será igual a nada. ¿Puede esto explicarse en términos realmente simples?

XXXXXXXXXXXXXXXXXXXXX es cualquier cadena de 22 caracteres si hago lo siguiente donde p es cualquier cadena de 5 bytes.

var c = aes256.encrypt(k, p);

Aquí hay un código en el nodo

var aes256 = require('aes256');
var k = 'THIS IS MY ONE AND ONLY KEY'; // A KEY
var p = 'ABCDE'; // 5 CHARACTER STRING
var e = aes256.encrypt(k, p);
console.log (e);
var decrypted_1 = aes256.decrypt(k, e);
console.log (decrypted_1)
var decrypted_2 = aes256.decrypt(k, 'AAAAAAAAAAAAAAAAAAAAAA');
console.log (decrypted_2)

El valor de decrypted_2 está en blanco, no entiendo por qué

    
pregunta pee2pee 27.12.2017 - 10:41
fuente

1 respuesta

1

Supongo que te estás refiriendo a esta biblioteca JS . Mientras que la documentación incompleta sugiere que hace AES-256 con la clave y el texto cifrados dados, el código sugiere que hace otra cosa: la clave no es la clave AES, pero la clave AES se derivará de ella usando SHA256. Y la entrada no es el texto cifrado, pero se tratará como Base64. También utilizará los primeros 16 bytes de la entrada descodificada como IV y luego descifra los siguientes 16 bytes. Esto significa que para cubrir al menos 1 byte de texto sin formato, su entrada debe ser un binario de 17 bytes (16 bytes IV + 1 byte de datos). Este binario de 17 bytes da como resultado una cadena codificada en base64 de 23 bytes y cualquier entrada más corta que esa simplemente no contendrá ningún dato para descifrar.

    
respondido por el Steffen Ullrich 27.12.2017 - 11:16
fuente

Lea otras preguntas en las etiquetas