2013-01-11 103 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; 
}