看板 PHP 關於我們 聯絡資訊
先聲明,這是我的作業 但剛好可以回答這個問題 回答完後,我自己的問題還沒解決 所以我其實是想問做業的 (當然我最後得自己解決啦,畢竟景氣不好,做不出來就等死吧..) ---- sample code 來自於某網站 我還沒看懂 function paypal_encrypt($hash) { //Sample PayPal Button Encryption: Copyright 2006,2007 StellarWebSolutions.com //Not for resale - license agreement at //http://www.stellarwebsolutions.com/en/eula.php global $MY_KEY_FILE; global $MY_CERT_FILE; global $PAYPAL_CERT_FILE; global $OPENSSL; if (!file_exists($MY_KEY_FILE)) { echo "ERROR: MY_KEY_FILE $MY_KEY_FILE not found\n"; } if (!file_exists($MY_CERT_FILE)) { echo "ERROR: MY_CERT_FILE $MY_CERT_FILE not found\n"; } if (!file_exists($PAYPAL_CERT_FILE)) { echo "ERROR: PAYPAL_CERT_FILE $PAYPAL_CERT_FILE not found\n"; } if (!file_exists($OPENSSL)) { echo "ERROR: OPENSSL $OPENSSL not found\n"; } //Assign Build Notation for PayPal Support //$hash['bn']= 'StellarWebSolutions.PHP_EWP'; $openssl_cmd = "$OPENSSL smime -sign -signer $MY_CERT_FILE -inkey $MY_KEY_FILE " . "-outform der -nodetach -binary | $OPENSSL smime -encrypt " . "-des3 -binary -outform pem $PAYPAL_CERT_FILE"; $descriptors = array( 0 => array("pipe", "r"), 1 => array("pipe", "w"), ); $process = proc_open($openssl_cmd, $descriptors, $pipes); if (is_resource($process)) { foreach ($hash as $key => $value) { if ($value != "") { //echo "Adding to blob: $key=$value\n"; fwrite($pipes[0], "$key=$value\n"); } } fflush($pipes[0]); fclose($pipes[0]); $output = ""; while (!feof($pipes[1])) { $output .= fgets($pipes[1]); } //echo $output; fclose($pipes[1]); $return_value = proc_close($process); return $output; } return "ERROR"; }; 以上,利用 pipe,proc_open 做到了執行外部程式及讀回結果 相信解決了同步問題 而我的問題是,我要把這段程式,改寫成不必呼叫外部 openssl 的純PHP版本 (php 有 openssl 系列指令呀!!) 因為這還要跨足到密碼學 及 PayPal 付費機制 所以我也沒把握在這兒能問到答案 只好希望本板臥虎藏龍.. 而且對於傳哪些參數進 openssl ,我是怎麼看覺得怎麼怪 搞不懂為什麼要把自己的私鑰都給傳進去 怪,非常怪.. Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.219.65.16