Si te encuentras con alguna parte que no comprendes puedes dejarlo en la sección de comentarios y te ayudaremos lo más rápido posible.
Solución:
Hola,
para lograr esto se debe considerar el uso de la key y iv con 32 dígitos hexadecimales cada uno, tuve que resolver exactamente esto haciendo mis cosas y así es como funciona
Y ahora recibiendo y descifrando en PHP
Con esto tendremos de vuelta el “Hola, esto se verá descifrado más adelante” 🙂
Aquí hay una solución basada en este comentario, usando openssl_decrypt
de PHP.
El JavaScript parte (desarrollo con NodeJS para navegadores): primero, instale CryptoJS con npm install crypto-js
, luego su código JS:
import aes from 'crypto-js/aes'
import encHex from 'crypto-js/enc-hex'
import padZeroPadding from 'crypto-js/pad-zeropadding'
// message to encrypt
let msg = "Hello world";
// the key and iv should be 32 hex digits each, any hex digits you want, but it needs to be 32 on length each
let key = encHex.parse("0123456789abcdef0123456789abcdef");
let iv = encHex.parse("abcdef9876543210abcdef9876543210");
// encrypt the message
let encrypted = aes.encrypt(msg, key, iv:iv, padding:padZeroPadding).toString();
// and finally, send this "encrypted" string to your server
Sobre el PHP lado, su código se verá así:
// we use the same key and IV
$key = hex2bin("0123456789abcdef0123456789abcdef");
$iv = hex2bin("abcdef9876543210abcdef9876543210");
// we receive the encrypted string from the post
$encrypted = $_POST['decrypt'];
$decrypted = openssl_decrypt($encrypted, 'AES-128-CBC', $key, OPENSSL_ZERO_PADDING, $iv);
// finally we trim to get our original string
$decrypted = trim($decrypted);
Nos encantaría que puedieras difundir este escrito si lograste el éxito.