php - 如何在 openssl_pkey_new 中指定密码加密强度?

标签 php cryptography openssl rsa

使用 PHP 函数 openssl_pkey_newopenssl_pkey_export要生成 RSA key ,如何确保最严格的密码保护?
例如

$conf = array (
    'digest_alg'       => 'sha256',
    'private_key_type' => OPENSSL_KEYTYPE_RSA,
    'private_key_bits' => 2048,
    'encrypt_key'      => true,
);
$keypair = openssl_pkey_new( $conf );
openssl_pkey_export( $keypair, $keyout, 'foopass', $conf );

从命令行使用 openssl,我可以像这样指定三元组:
 openssl genrsa -des3 -passout pass:foopass 2048

最佳答案

据我所知,指定 encrypt_keytrue$configargs (就像您在代码示例中所做的那样)已经使用三重 DES 进行了加密。如果您检查 $keyout 的输出, 你会看见:

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,6FDE8DC937CC1C27

无论您使用 sha1 都是如此, md5 , sha256或任何其他摘要。

换句话说,'encrypt_key' => trueopenssl genrsa -des3 完全相同.

关于php - 如何在 openssl_pkey_new 中指定密码加密强度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4444223/

相关文章:

php - CodeIgniter - 声明全局变量的最佳位置

php - PDO 没有这样的文件或目录 - 仅 ftp 服务器访问

php - 如何在 PALM webOS 中连接到外部数据库(例如 MySQL)

.net - 如何使用 .NET Framework 执行 RSAES-OAEP 加密和解密?

c - 从文件加载 RSA key

ssl - OpenSSL - 在本地系统中工作但不在其他 LAN 系统中工作 [Intranet]

c# - PHP 可以解压用.NET GZipStream 类压缩的文件吗?

java - PKCS#7 登录并验证签名

c# - 这足以签署数据吗?

android - 为 Android 构建 openssl 的问题