Decrypt in PHP with Salt, password, and type?

谁说我不能喝 提交于 2019-12-03 21:54:19

JS

    // encrypt data with CryptoJS

    var crypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");

    // get additional info from CryptoJS ecnrypted data

    var data_base64 = crypted.ciphertext.toString(CryptoJS.enc.Base64);
    var iv_base64   = crypted.iv.toString(CryptoJS.enc.Base64);
    var key_base64  = crypted.key.toString(CryptoJS.enc.Base64);

PHP

    $encrypted = base64_decode("data_base64"); // data_base64 from JS
    $iv        = base64_decode("iv_base64");   // iv_base64 from JS
    $key       = base64_decode("key_base64");  // key_base64 from JS

    /* MCRYPT */
    $plaintext = mcrypt_decrypt( MCRYPT_RIJNDAEL_128, $key, $encrypted, MCRYPT_MODE_CBC, $iv );

    // remove padding added by crypt algorithms
    $plaintext = rtrim($plaintext, "\t\0 "); // remove tab-, zero- and space-padding

    /***************************************/
    /* OPENSSL */
    $plaintext = openssl_decrypt($encrypted, 'AES-256-CBC', $key, 0, $iv);
    // or
    $plaintext = openssl_decrypt("data_base64", 'AES-256-CBC', $key, OPENSSL_RAW_DATA, $iv); // works with base64 encoded data from JS
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!