1

暗号化されたデータがベンダーから送信されてきており、これをデコードする必要があります。

データは公開鍵で暗号化され、ベンダーの秘密鍵で署名されてから、base64 でエンコードされ、POST 変数としてサーバーに送信されます。- 私はこれを制御できません。詳細については、ベンダーが .net システムを実行しており、当社のシステムは Linux ディストリビューションです。

このデータを解読するのに多くの困難を抱えているので、助けていただければ幸いです。私の秘密鍵とベンダーの公開鍵を使用してデータを base64 デコードした後、「簡単に」デコードできると言われました。

私が現在持っているコードは次のようになります

$data = base64_decode($_POST['encryptedData']);

$public     = openssl_get_publickey('/path/vendors/public/key.cer');
$private    = openssl_get_privatekey('/path/to/my/private/key.key');

$env_key = $public;

if (openssl_open($data, $open, $env_key, $private)) {
    echo "here is the opened data: ", $open;
} else {
    echo "failed to open data";
}

PHP には精通していますが、openssl ライブラリを使用したことはありません

実際にはSSOタイプのアプリケーションから来ていますが、送信されたデータを復号化するだけでよいので、phpSAMPなどを実装する必要はないと思います(アサーション)

また、使用している公開鍵と秘密鍵が 100% 正しいかどうかも少しわかりません。公開鍵を見ると、16 進形式ではなく秘密鍵のように見えます。

私の秘密鍵は次のようになります。

-----BEGIN RSA PRIVATE KEY-----
FRt6SFwIBAAKCAQEAn2D2XXXXXsfdsSDFSDF534MR/5Efsfs4OWNTtc34yYgO1cu
2GYh07MOZnrz5VsDJg8iacB1B3FAA0qrNLFuU8BEnLYDk36zyDurJwkBfCFc1MHq
lIfhUT9/bT/5naQGQ29dJZuXsfdsSDFSDF534MR/5Efsfshpf0qWArj5qBJduVc+
....truncated
-----END RSA PRIVATE KEY-----

公開鍵は次のようになります。

0ad2 ca15 c2d3 5e82 b9a4 ae81 6898 b9bf
cef6 a464 e382 b897 1755 956c 79df fe15
3a44 8c75 47bf 8a54 375f d611 c4ec 551c
...... More Data
724e 536d c437 0383 66ca c998 a357 4e1a
f7ad bdf0 cc13 2152 354b f8

私はインターネットをよく見ていて、この特定の問題の実際の例を見つけることができません。

前もって感謝します。

4

1 に答える 1

0

暗号化されてから署名され、CMS 形式 (以前の PKCS#7) を想定している場合は、まずそれを確認し、コンテンツを取得 (機能を確認) してから復号化する必要があると思います。詳しくは(あるようです)こちら.

于 2014-06-12T23:24:32.980 に答える