Saltar al contenido

Excepción de descifrado: la longitud de los datos para descifrar no es válida

Este escrito fue analizado por especialistas para asegurar la veracidad de nuestra esta noticia.

Solución:

tu problema es string cipher_Tx = Encoding.Default.GetString(x_ciphertext, 0, x_ciphertext.Length);.

x_ciphertext no es una representación válida de bytes de texto, tiene muchos caracteres impresentables y cuando haces tu byte[] para string conversión estás perdiendo información. La forma correcta de hacerlo es usar un string formato que está diseñado para representar datos binarios usando algo como Convert.ToBase64String(byte[]) y Convert.FromBase64String(string).

string cipher_Tx = Convert.ToBase64String(x_ciphertext)

x_encryptor.Dispose();

x_alg.Clear();
byte[] cipher = Convert.FromBase64String(cipher_Tx)

Dicho esto, hay muchas otras cosas “raras” sobre su código, por ejemplo, no usa using declaraciones y usted realmente debe. También toda esa conversión a string y atrás es totalmente innecesario, solo regresa x_ciphertext. También puede haber otros problemas con el código (como dónde están las cadenas para Key y IV provienen) y muchas otras mejores prácticas (como que debería generar un IV aleatorio y escribirlo en la salida y el key debe generarse mediante un key función de derivación no directamente del texto del usuario), pero dejé de verificar después de encontrar el string problema de conversión.

Si estás contento con lo expuesto, tienes el poder dejar un artículo acerca de qué te ha parecido este escrito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *