PHP7.2環境にてJavaScriptから飛んできた暗号化されたデータを複合化しようとしているのですがうまく複合化出来ません。
サンプルで作成したPHP上ではお互いに暗号化複合化が行えたのですが、JavaScriptから飛んできたデータを複合化しようとすると失敗します。
発生している問題・エラーメッセージ
bool(false)
PHPコード
<?php // 暗号化 $iv = "0123456789abcdef"; $password = "hogehoge"; $data = "暗号化したい文字列"; $encrypt = "{$iv}," . base64_encode(openssl_encrypt($data, "AES-256-CBC", $password, 1, $iv)); // 暗号化されたデータが出力される var_dump($encrypt); // 複合化 list($iv, $str) = explode(',',$encrypt); $data = base64_decode($str); $value = openssl_decrypt($data, "AES-256-CBC", $password, 1, $iv); var_dump($value);
JavaScriptコード
// JavaScriptで暗号化したデータの作成 var CryptoJS = require("cryptojs"); var iv = CryptoJS.lib.WordArray.random(64/8).toString(); var password = "hogehoge"; var data = "sampleString"; var options = {iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7}; var encrypt = CryptoJS.AES.encrypt(data, password, options); // このデータをPHPにPOSTすると失敗する。 var value = iv + "," + encrypt;
JavaScriptで変数valueに出力された値を上記PHPコードの$encryptにセットし、複合化を行うとfalseとなってしまいます。
代替案でライブラリは一応見つけたものの、そもそも何故動かなかったのかをきちん理解しておきたいので、どうかお知恵を拝借したく。
よろしくお願いします。