javascriptcryptojslatin1

CryptoJS not decrypting non-Latin characters faithfully


I am trying to use CryptoJS AES, like so:

var msg = "café";
var key = "something";
var c = CryptoJS.AES.encrypt(msg, key).toString();
CryptoJS.AES.decrypt(c, key).toString(CryptoJS.enc.Latin1);

Unfortunately this returns café, not café. Clearly Latin1 is not the right encoding to use, but I can't find a better one. Is there a solution?

Thanks.


Solution

  • You are just missing the format
    The proper way is using CryptoJS.enc.Utf8

    So, Please try:

    CryptoJS.AES.decrypt(c, key).toString(CryptoJS.enc.Utf8);