¿Cómo verificar si el descifrado es correcto?

1

Estoy trabajando en una sala de chat que encripta mensajes para más de un usuario y cada usuario puede tener un cifrado y una clave / contraseña diferentes. La clave del usuario no funcionará con todo el mensaje, por lo tanto; errores de devolución.

var message ="secret message";
var encrypted = CryptoJS.AES.encrypt(message, "Secret Passphrase");
try {
    var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase123").toString(CryptoJS.enc.Utf8);
    if (decrypted.length > 0) {
        alert(decrypted);
    } else {
        alert("false");
    }
} catch(e) {
    alert("false");
}

Actualmente estoy detectando el error, pero a veces el descifrado vuelve con letras y símbolos mezclados. La forma actual en que estoy haciendo esto no es eficiente. ¿Hay una mejor manera?

Le pido a esta pregunta más temprano en stackoverflow, pero sugirieron que podría tener suerte aquí.

    
pregunta toastext 06.06.2016 - 20:02
fuente

1 respuesta

1

Solo usa un modo autenticado como GCM. Esto no solo le dirá si se usó o no la clave correcta para descifrar, sino que también evita ataques de manipulación de mensajes, la peor de las cuales puede permitir a los atacantes descifrar completamente los mensajes cifrados.

    
respondido por el Stephen Touset 06.06.2016 - 22:52
fuente

Lea otras preguntas en las etiquetas