PHP で暗号化されたデータをデコードしようとしていますが、戻り値が null として返され続けます。
復号化するデータは、データ引数として PHP ファイルに入ります。
$dataArg1 = $_REQUEST["data"];
// Retrieve $encryptedData from storage ...
//
// Load the private key and decrypt the encrypted data
$encryptedData = $dataArg1;
$privateKey = array ( array(123456,654321,123456), array(123456,1234),
array(1234567,4321)
);
openssl_private_decrypt($encryptedData, $sensitiveData, $privateKey);
上記の関数は、スタック オーバーフローに関する別の投稿の 2 番目の応答からのものです: javascript でデータを暗号化し、php で復号化する方法は?
復号化された値が PHP 変数 $sensitiveData にあると仮定します。
それを画面にエコーすると、何も得られません。
echo("sensitiveData=[$sensitiveData]<br />");
考え?
更新: openssl_private_decrypt() からの戻り値は FALSE であり、戻り値は NULL です。
更新 2: 次の URL から公開/秘密キーを作成しました。 http://shop-js.sourceforge.net/crypto2.htm
一番下に、次の行があります: そして、プライベート スクリプトに次の行を追加します (おそらく、インターネット上ではなく、ローカルのハード ディスク上にあります。秘密鍵が見つかった場合、このすべては役に立ちません)。
<script>
function decrypt() {
// key = [ [d], [p], [q] ];
var key=[[123456789,123456789,123456789],[123456789,1234],[123456789,4321]];
document.form.text.value=rsaDecode(key, document.form.text.value);
}
</script>
(actual values changed)
「var key=」行を PHP にコピーしてコピーしました (他の投稿による)。埋め込み配列を使用した上記の翻訳。次に、そのキーを復号化関数に渡します。
私の考えでは、PHP のドキュメントでは秘密鍵を「混合」と呼んでいます。秘密鍵に別の形式が必要かどうか疑問に思っています。
出力は次のとおりです。
dataArg1=[jmOdss9ktFc\"WO5eltUZXt0rpqS1NluNKa]
bResult=[]
sensitiveData=[]
var_dump=[NULL ]