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

337
Views
How to decrypt with PHP a string that is encrypted in CryptoJS in javascript

We encrypted a string in JS with this code by this JS library:

CryptoJS.AES.encrypt("Message", "Key").toString()

and then save it to the database for future use cases. Now we want to decrypt that hash in PHP by this code:

openssl_decrypt( "Message", "aes-128-ctr", "Key")

but it gives us a null value! How can we do it without making any changes in JS code?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

In JS side do this:

    var CryptoJSAesJson = {
      stringify: function (cipherParams) {
        var j = { ct: cipherParams.ciphertext.toString(CryptoJS.enc.Base64) };
        if (cipherParams.iv) j.iv = cipherParams.iv.toString();
        if (cipherParams.salt) j.s = cipherParams.salt.toString();
        return JSON.stringify(j);
      },
      parse: function (jsonStr) {
        var j = JSON.parse(jsonStr);
        var cipherParams = CryptoJS.lib.CipherParams.create({
          ciphertext: CryptoJS.enc.Base64.parse(j.ct),
        });
        if (j.iv) cipherParams.iv = CryptoJS.enc.Hex.parse(j.iv);
        if (j.s) cipherParams.salt = CryptoJS.enc.Hex.parse(j.s);
        return cipherParams;
      },
    };

    let data = CryptoJS.AES.encrypt("Text", "Key", {
      format: CryptoJSAesJson,
    }).toString();

    //store the "data" in DB or another place

and in PHP Side do this:

     function cryptoJsAesDecrypt($passphrase, $jsonString){
         $jsondata = json_decode($jsonString, true);
         $salt = hex2bin($jsondata["s"]);
         $ct = base64_decode($jsondata["ct"]);
         $iv  = hex2bin($jsondata["iv"]);
         $concatedPassphrase = $passphrase.$salt;
         $md5 = array();
         $md5[0] = md5($concatedPassphrase, true);
         $result = $md5[0];
         for ($i = 1; $i < 3; $i++) {
             $md5[$i] = md5($md5[$i - 1].$concatedPassphrase, true);
             $result .= $md5[$i];
         }
         $key = substr($result, 0, 32);
         $data = openssl_decrypt($ct, 'aes-256-cbc', $key, true, $iv);
         return $data;
    }

    echo cryptoJsAesDecrypt("Key",data);
    // will show "Text"

source: This Link

about 4 years ago · Juan Pablo Isaza 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!