質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

Q&A

1回答

2259閲覧

AES暗号化及び復号がうまくいきません

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

0グッド

3クリップ

投稿2019/05/11 20:17

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となってしまいます。
代替案でライブラリは一応見つけたものの、そもそも何故動かなかったのかをきちん理解しておきたいので、どうかお知恵を拝借したく。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argparse

2019/05/17 06:36

御呈示のコードは (`cryptojs` ではなく) `crypto-js` package を使用したものかと御見受けするのですが、その認識で宜しいでしょうか? 誤りであれば、 JavaScript 側で使用している package のバージョンなどを含めた詳細情報を追記頂ければ幸いです。
guest

回答1

0

IVを2重に渡していませんか?
単なる引数エラーではないでしょうか。

投稿2019/08/22 00:56

編集2019/08/22 00:57
hillacken

総合スコア359

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問