2014-01-22 3 views
3
var encrypted = CryptoJS.AES.encrypt(jsonStr, 'youngunicornsrunfree', { format: JsonFormatter }); 

//convert encrypted to a string for transfer 
//convert string back to Crypto object so it can be decrypted. 

var decrypted = CryptoJS.AES.decrypt(encrypted, "youngunicornsrunfree", { format: JsonFormatter }); 

Эти два шага работают нормально. Но между ними мне нужно преобразовать зашифрованный в строку для передачи по сети, а затем преобразовать ее обратно. Как я могу это сделать?Как преобразовать в строку и обратно с помощью CryptoJs

ответ

8

Давайте упростим это, чтобы иметь возможность решить эту проблему. Ели мы начинаем что-то вроде этого:

jsonStr = '{"something":"else"}'; 
var encrypted = CryptoJS.AES.encrypt(jsonStr, 'youngunicornsrunfree'); 
var decrypted = CryptoJS.AES.decrypt(encrypted, "youngunicornsrunfree"); 
console.log(decrypted.toString(CryptoJS.enc.Utf8)); 

Это дает нам ответ jsonStr после того как мы зашифровать его расшифровать его. Но скажем, мы хотим отправить его на сервер. Мы можем сделать это легко, вытащив зашифрованную строку с помощью toString(). Звучит просто так? Скажем, нам нужно отправить зашифрованный jsonStr на сервер. Попробуйте это

jsonStr = '{"something":"else"}'; 
var encrypted = CryptoJS.AES.encrypt(jsonStr, 'youngunicornsrunfree'); 
console.log("We send this: "+encrypted.toString()); 

Теперь скажите, что мы отправили что-то раньше, и мы вернем его. Мы можем сделать что-то вроде этого:

var messageFromServer = "U2FsdGVkX19kyHo1s8+EwNuo/LQdL3RnSoDHU2ovA88RtyOs+PvpQ1UZssMNfflTemaMAwHDbnWagA8lQki5kQ=="; 
var decrypted = CryptoJS.AES.decrypt(messageFromServer, "youngunicornsrunfree"); 
console.log(decrypted.toString(CryptoJS.enc.Utf8)); 
+0

К сожалению, к сожалению. Я получаю пустую строку. Если я дешифрую зашифрованный, не преобразовывая его в строку, он отлично работает, он не работает, как только я конвертирую его в строку. (даже используя ваш простой пример) – Baconbeastnz

+0

@Baconbeastnz С пустым результатом вы, скорее всего, не введете пароль или зашифрованное сообщение. Попробуйте запустить это в консоли на странице, содержащей скрипты 'CryptoJS.AES.decrypt (CryptoJS.AES.encrypt ('It works !!!', 'pass'). ToString(), 'pass'). ToString (CryptoJS .enc.Utf8) 'Если это работает, вы, вероятно, будете манипулировать зашифрованным сообщением перед расшифровкой или использованием неправильного пароля. – DutGRIFF

Смежные вопросы