2013-01-11 102 views
0

我使用openssl(openssl_encrypt和openssl_decrypt)加密我的web應用程序文件下載系統,我想爲此生成隨機密碼和IV。加密方法將是AES-256-CBC。我是密碼學的新手,發現關於這個問題的信息很少。如何爲openssl加密生成隨機密碼和IV

function encryptString($str) { 
    $encryptionMethod = "AES-256-CBC"; 
    $secretHash = "gererated random secret openssl key here"; 
    $encryptedStr = openssl_encrypt($str, $encryptionMethod, $secretHash, false, "generated random IV here"); 
    return $encryptedStr; 
} 

我試過openssl_pkey_new();但它返回了布爾值false。這是正確的方式嗎?

我得到的提示從這裏:Two-way encryption in PHP

爲運行WAMP本地主機測試環境的IM。

回答

0

由於在windows環境下使用php以編程方式執行此操作時出現問題,因此我在Linux中生成了密碼。對於Windows

openssl enc -d -a -md sha1 -aes-256-cbc -nosalt -p 

安裝說明發現這裏:php.net/manual/en/openssl.installation.php但我仍然無法得到它的工作。

我也需要改變功能有點使其正常工作:

function encryptUrl($url) { 
    $encryptionMethod = "AES-256-CBC"; 
    $pass = "Generated Pass"; 
    $iv = "Generated IV"; 
    $encryptedUrl = base64_encode(openssl_encrypt($url, $encryptionMethod, $pass, false, $iv)); 
    return $encryptedUrl; 
}