2013-12-19 58 views
1

我在我的raspbian(debian OS)上安裝了php5-cli軟件包,我在/ cli /目錄下載了phpseclib。 我創建了一個測試文件加密與公鑰文本以這種方式(關於這一點我有相同的庫我的Apache服務器中產生): phpseclib無法從終端使用php5-cli

 
    include('libs/Crypt/RSA.php'); 
    $rsa = new Crypt_RSA(); 
    $rsa->loadKey($myPublicKey); 
    $encrypted = $rsa->encrypt("my text"); 
    echo "result: " .$encrypted; 

如果我嘗試鍵入PHP test.php的result變量是空的。爲什麼?這是由於我使用php5-cli而不是php5從終端e執行文件? 如何獲得此加密操作的結果? 謝謝。

+1

感謝@JanC和@Sammitch!這是一個不正確的關鍵。現在所有的作品 – bit

回答

1

您提供的源代碼是正確的。如果$encrypted的值爲空,則可能由於loadKey中提供了錯誤的密鑰。

根據文件RSA.php中的註釋,那麼該命令將返回false如果密鑰無效:

/** 
* Loads a public or private key 
* 
* Returns true on success and false on failure (ie. an incorrect password was provided or the key was malformed) 
* 
* @access public 
* @param String $key 
* @param Integer $type optional 
*/ 
function loadKey($key, $type = false){ 
    ... 
} 
1
  1. 確保error_reporting上,並打開了足夠高。
  2. 嘗試var_dump($encrypted)而不是回顯。 PHPseclib的文檔有點欠缺,並且沒有詳細說明在失敗上Crypt_RSA :: encrypt()函數的行爲。它可能返回false,NULL或一個空字符串,並且echo不會告訴你哪個。