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

时间:2013-01-11 10:29:58

标签: php encryption random passwords openssl

我正在使用openssl(openssl_encrypt和openssl_decrypt)加密我的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();但它返回了我布尔假。这是正确的方法吗?

我从这里得到了提示:Two-way encryption in PHP

作为运行WAMP localhost的测试环境。

1 个答案:

答案 0 :(得分:0)

由于在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;
}