2014-06-12 14 views
1

我有一種情況,我正在從我需要解碼的供應商發送一些加密數據。PHP openssl_解密數據

數據已經用我的公鑰加密,並在被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%正確。當我查看我的公鑰時,它更像是私鑰的外觀而不是十六進制格式。

我的私有密鑰的樣子:

-----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 

我在互聯網良好的外觀並不能找到這個特定問題的任何工作實例。

在此先感謝。

+0

注意:響應中有一些密碼信息和x509證書信息。有可能我應該在openssl_open()函數中使用它,而不是從存儲在我的服務器上的供應商證書中調用文本字符串? –

+0

請注意,您可能想要刪除關於此的前一個問題(我認爲它是同樣的問題)。那個包含的數據不足以回答它。 –

回答

0

如果它被加密,然後簽名,並假設CMS格式(前PKCS#7),那麼我想你需要先驗證它,檢索內容(檢查函數),然後解密。更多信息(似乎是)here

+0

謝謝貓頭鷹。我明天檢查一下。你對此前的文章非常正確。 - 我沒有刪除它(我認爲)。 –

+0

@BunnyHuggan它肯定似乎給我:) –

+0

你解決了這個問題嗎? –