Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

514
Views
cifrar en PHP como javascript CryptoJS

Tengo javascript que encripta y da la cadena.
Pero tengo que hacer esto a través de PHP.
El método que probé me está dando un resultado diferente al de javascript.

 <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js" integrity="sha512-nOQuvD9nKirvxDdvQ9OMqe2dgapbPB7vYAMrzJihw5m+aNcf0dX53m6YxM4LgA9u8e9eg9QX+/+mPu8kCNpV2A==" crossorigin="anonymous"></script> var txt="This text will be encrypted."; var key = CryptoJS.enc.Hex.parse('0123456789abcdef0123456789abcdef'); var iv = CryptoJS.enc.Hex.parse('abcdef9876543210abcdef9876543210'); var encrypted = CryptoJS.AES.encrypt((txt), key, { iv: iv }); var encrypted_data = encrypted.ciphertext.toString(CryptoJS.enc.Base64); alert(encrypted_data);

obtengo salida:
2X/btHgrMBhNlgD8oKNO9rzqCg+RSydprVKmpbYY+j0=

En PHP

 <?php $plaintext="This text will be encrypted."; $key = pack("H*", "0123456789abcdef0123456789abcdef"); $iv = pack("H*", "abcdef9876543210abcdef9876543210"); $ciphertext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaintext, MCRYPT_MODE_CBC, $iv); $ciphertext_base64 = base64_encode($ciphertext); echo $ciphertext_base64; ?>

obtengo salida:
2X/btHgrMBhNlgD8oKNO9nJyd4xC4VTLGxnnrzGim+U=

Quiero la salida igual que la salida en javascript.
Descubrí que los 21 caracteres iniciales coinciden, pero no el resto de la cadena.
¿Algo que me esté perdiendo?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Esto se debe a los diferentes rellenos. CryptoJS usa PKCS#7, mcrypt aplica cero relleno.

Debe reemplazar mcrypt en el lado de PHP, ya que está en desuso ( ver aquí ). Una alternativa sería PHP/OpenSSL, que usa PKCS#7 por defecto.

Una solución con PHP/OpenSSL que produce el mismo texto cifrado es:

 <?php $plaintext="This text will be encrypted."; $key = hex2bin("0123456789abcdef0123456789abcdef"); $iv = hex2bin("abcdef9876543210abcdef9876543210"); $ciphertext_base64 = openssl_encrypt($plaintext, "aes-128-cbc", $key, 0, $iv); echo $ciphertext_base64; // 2X/btHgrMBhNlgD8oKNO9rzqCg+RSydprVKmpbYY+j0= ?>
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!