Consulta realizada: Hace 2 meses desde España
Ultimo comentario: Hace 2 meses
Tengo un código en php que me desencripta una cadena en el modo aes-256-cbc y funciona muy bien: function decryptOpensslDigestSHA256Sum($data) { $key = hash('sha256', 'mypassword'); //Mi password tiene 14 caracteres $method = 'aes-256-cbc'; $data = base64_decode($data); $iv_size = openssl_cipher_iv_length($method); $salt_header = substr($data, 0, $iv_size); if (substr($salt_header, 0, 8) != "salted__") { return ""; } $salt = substr($salt_header, 8); $creds = extractopensslcreds($key, $salt, $iv_size); $data = openssl_decrypt(substr($data, $iv_size), $method, $creds['password'], openssl_raw_data, $creds['iv']); return $data; } function extractopensslcreds($key, $salt, $iv_size) { $m = ""; while (strlen($m) < 48) { $m .= HashCryptoDigestSHA256Sum($m, $key, $salt); } $result = array( 'password' => substr($m, 0, 32), 'iv' => substr($m, 32, $iv_size) ); return $result; } function hashCryptoDigestSHA256Sum($hash, $key, $salt) { $hash.= $Key.$Salt; $prev = openssl_digest($hash, "sha256", true); return $prev; } Al invocar el script en php pasándole este dato encriptado: U2FsdGVkX1++7PN6CsF5Bi38t0N3EjXpH5oGpaIZXUwk4T8QCwcATjvA4b/8VaxD8nf/MZhKPnWb1L8raLR4lw== Y lo desencripta bien, mostrándome algo así: [email protected]&name=&gpw_id=gpwID Esto lo he intentado pasar a CryptoJS con este código: function CryptoJSAesDecrypt(encrypted){ // 1. Separate ciphertext and salt var encryptedWA = CryptoJS.enc.Base64.parse(encrypted); var prefixWA = CryptoJS.lib.WordArray.create(encryptedWA.words.slice(0, 8/4)); // Salted__ prefix var saltWA = CryptoJS.lib.WordArray.create(encryptedWA.words.slice(8/4, 16/4)); // 8 bytes salt: 0x0123456789ABCDEF var ciphertextWA = CryptoJS.lib.WordArray.create(encryptedWA.words.slice(16/4, encryptedWA.words.length)); // ciphertext // 2. Determine key and IV using PBKDF2 var password = 'mypassword' var keyIvWA = CryptoJS.PBKDF2( password, saltWA, { keySize: (32+16)/4, // key and IV iterations: 10000, hasher: CryptoJS.algo.SHA256 } ); var keyWA = CryptoJS.lib.WordArray.create(keyIvWA.words.slice(0, 32/4)); var ivWA = CryptoJS.lib.WordArray.create(keyIvWA.words.slice(32/4, (32+16)/4)); // 3. Decrypt var decryptedWA = CryptoJS.AES.decrypt( {ciphertext: ciphertextWA}, keyWA, {iv: ivWA} ); var decrypted = decryptedWA.toString(CryptoJS.enc.Utf8) return decrypted; } Y el resultado es vacío. Por favor, alguien experto en CryptoJS?
Este proyecto ha sido publicado por un usuario tercero a TakeYourDesign. Algunos de los datos pueden ser omitidos para proteger la privacidad de nuestros usuarios. Esta información solo es mostrada para tener referencias de proyectos que trabajamos. Cada proyecto es diferente, por ello, te invitamos a escribirnos sobre tu proyecto y te ayudaremos con mucho gusto.