Crypro-js, AES

0

Witam. Nie mogłem znaleźć w internecie przykładu (pewnie sam nie wiem czego szukam), nigdy nie korzystałem z tego. Jeśli zakoduje sobie jakiegoś stringa:

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
 
alert(encrypted); // U2FsdGVkX1+iX5Ey7GqLND5UFUoV0b7rUJ2eEvHkYqA=
alert(encrypted.key); // 74eb593087a982e2a6f5dded54ecd96d1fd0f3d44a58728cdcd40c55227522223
alert(encrypted.iv); // 7781157e2629b094f0e3dd48c4d786115
alert(encrypted.salt); // 7a25f9132ec6a8b34
alert(encrypted.ciphertext); // 73e54154a15d1beeb509d9e12f1e462a0

z tego co widzę, klucz, iv, salt generują się automatycznie. Ale czy to znaczy że są 'użyte' ? czym jest 'Secret Passphrase' w tym przypadku? kluczem/hasłem?

bo bez soli/klucza/iv tez się da rozszyfrować:

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt("U2FsdGVkX1+iX5Ey7GqLND5UFUoV0b7rUJ2eEvHkYqA=", "Secret Passphrase");

Jak poprawnie zaszyfrować tekst? Trzeba 'ręcznie' generować klucze? Jak odszyfrować taką wiadomość, posiadając: hash, key, iv, salt? (jeśli to wystarczy do odszyfrowania)

0

^Up

0

Wydaje mi się, że zaszyfrowana postać posiada w sobie oprócz zakodowanej wiadomości także sól, a sam algorytm jest w stanie zregenerować z soli oraz hasła zarówno IV jak i klucz szyfrujący użyte przy procesie szyfrowania. Sól wygląda na generowaną (pseudo)losowo za każdym razem, stąd dwukrotne wywołanie funkcji encrypt z tymi samymi parametrami nie powinno dać identycznego wyniku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1