Php 如何为openssl加密生成随机密码和IV

Php 如何为openssl加密生成随机密码和IV,php,encryption,random,passwords,openssl,Php,Encryption,Random,Passwords,Openssl,我正在用openssl(openssl\u加密和openssl\u解密)加密我的web应用程序文件下载系统,我想为此生成随机密码和IV。加密方法为AES-256-CBC。我是密码学的新手,发现关于这个问题的信息很少 function encryptString($str) { $encryptionMethod = "AES-256-CBC"; $secretHash = "gererated random secret openssl key here"; $enc

我正在用openssl(openssl\u加密和openssl\u解密)加密我的web应用程序文件下载系统,我想为此生成随机密码和IV。加密方法为AES-256-CBC。我是密码学的新手,发现关于这个问题的信息很少

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();但它给了我一个错误的答案。这条路对吗

我从这里得到了提示:


作为测试环境,我正在运行WAMP localhost。

因为在windows环境中用php编程实现这一点是有问题的,所以我在Linux中生成了密码

openssl enc -d -a -md sha1 -aes-256-cbc -nosalt -p
在这里可以找到windows的安装说明: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;
}