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

611
Views
PHP convierte MCRYPT_ENCRYPT a OPENSSL_ENCRYPT (encabezado SOAP)

Necesito encriptar algunos campos de encabezado SOAP y actualmente tengo el siguiente código funcionando en un proyecto con la versión PHP 5.6.

 function getBaseEncoded($data, $key) { $size = $this->pkcs5_pad($data, mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB)); $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB), MCRYPT_RAND); $result = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $size, MCRYPT_MODE_ECB, $iv); return trim(base64_encode($result)); } private function pkcs5_pad($text, $blocksize) { $pad = $blocksize - (strlen($text) % $blocksize); return $text . str_repeat (chr($pad), $pad); }

Lo que pasa es que ahora tengo en mis manos un proyecto similar pero con PHP 7, y la función MCRYPT está obsoleta y necesito cambiarla a OPENSSL_ENCRYPT.

El siguiente código es mi primer intento:

 function getBaseEncoded($data, $key) { $result = openssl_encrypt($data, 'AES-128-ECB', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING); return trim(base64_encode($result)); }

Pero ahora recibo un error SOAP con el mensaje

SoapFault => No se pudo conectar al host

y me hizo pensar si el problema está en mi nueva función?

about 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Le faltan algunos datos del vector inicializador.

 $ivsize = openssl_cipher_iv_length('AES-128-ECB'); $iv = openssl_random_pseudo_bytes($ivsize); $ciphertext = openssl_encrypt( $data, 'AES-128-ECB', $key, OPENSSL_RAW_DATA | OPENSSL_ZERO_PADDING, $iv );
about 4 years ago · Santiago Trujillo Report

0

echo encrypt_openssl($data, $key); function encrypt_openssl($msg, $key, $iv = null) { $iv_size = openssl_cipher_iv_length('AES-128-ECB'); if (!$iv) { $iv = openssl_random_pseudo_bytes($iv_size); } $encryptedMessage = openssl_encrypt($msg, 'AES-128-ECB', $key, OPENSSL_RAW_DATA, $iv); return base64_encode($iv . $encryptedMessage); }
about 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!