定义用法
openssl_pkey_new() 函数将返回具有新的私有密钥和公钥对的资源标识符。
描述
函数 openssl_pkey_new() 返回资源标识符。您可以使用 openssl_pkey_get_details() 函数来获取生成的密钥的所有详细信息。
密钥(公钥/私有对)稍后与其他 openssl 函数(如 openssl_sign()、openssl_csr_new() )一起使用,以获取 CSR 证书,这有助于创建加密数字签名。
语法
参数
参数 | 描述 |
---|---|
configargs | 参数 configargs 是生成私钥/公钥对时需要提供给函数的配置详细信息。详情如下所述。 |
configargs
默认情况下,openssl_pkey_new() 使用 openssl.cnf 中存在的配置详细信息。但是使用 configargs 你可以覆盖它们。配置详情如下:
configargs的key | 类型 | key used in openssl.conf | 描述 |
---|---|---|---|
digest_alg | string | default_md | 从 openssl_get_md_methods() 获取的摘要方法。 |
x509_extensions | string | x509_extensions | 创建 x509 证书时使用的扩展。 |
req_extensions | string | req_extensions | 创建 CSR 时使用的扩展。 |
private_key_bits | integer | default_bits | 指定在生成私钥时要使用的位数。 |
private_key_type | integer | none | 要创建的私有密钥的类型。它可以是 OPENSSL_KEYTYPE_DSA、OPENSSL_KEYTYPE_DH、OPENSSL_KEYTYPE_RSA 或 OPENSSL_KEYTYPE_EC 之一。默认值为 OPENSSL_KEYTYPE_RSA。 |
encrypt_key | boolean | encrypt_key | 导出的密钥是否加密? |
encrypt_key_cipher | integer | none | 密码常量,如 OPENSSL_CIPHER_RC2_40 (integer),OPENSSL_CIPHER_RC2_128 (integer),OPENSSL_CIPHER_RC2_64 (integer),OPENSSL_CIPHER_DES (integer), OPENSSL_CIPHER_3DES (integer) 等。 |
curve_name | string | none | 此函数返回的曲线名称之一 openssl_get_curve_names()。 |
config | string | N/A | 可以根据需要更改 openssl.conf 中的配置,并在此处提供其路径。 |
返回值
PHP openssl_pkey_new() 函数在没有错误的情况下返回资源标识符。如果密钥生成失败,它将返回 false。
PHP 版本
此函数将在 PHP 版本高于 5.0.0 的情况下工作。
示例 1
openssl_pkey_new() 的工作:
这将产生以下结果:
resource(2) of type (OpenSSL key)
示例 2
openssl_pkey_new() 和 openssl_pkey_get_details() 的工作原理:
示例 3
要从 openssl_pkey_new() 读取公钥:
这将产生以下结果:
欢迎浏览qikepu.com的hash值是 - edc7b99a
示例 4
要将 openssl_pkey_new() 中的公钥存储在文件中:
文件 mypublic.key 的内容是:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3QxA7vWIz+F5t12/fl0H
vyavVy/ZNZFWGK6BID/koYeVA2wKdXx9De3gn0hs4sSrN3aV58ctuxDVx36rKvYd
AjKHfnfh7NmXnCEeUE4SgUUe0UUleoEMtsPP2Q8BC1HUjcC6SyJQKZG0bQqQlnAb
HL7ou2TNsjA/SiJbPD+0OpsLAcW1c/DeoM+TAkZo0JIlgxjcJ5ZlEbJ0Mxv6m9XK
k3bbMYHtKmZl+fzfPNcxCuK8Djnm5mYVR9KX1L86m1jz2kUQT/+wW84QRnZ7G+z8
4rQ77sZvWiIwwO2JmUvIsYeUxEP6/keZbDRuyO/2tWk/VxqQry4+Ktix/M2/iKWo
QQIDAQAB
-----END PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3QxA7vWIz+F5t12/fl0H
vyavVy/ZNZFWGK6BID/koYeVA2wKdXx9De3gn0hs4sSrN3aV58ctuxDVx36rKvYd
AjKHfnfh7NmXnCEeUE4SgUUe0UUleoEMtsPP2Q8BC1HUjcC6SyJQKZG0bQqQlnAb
HL7ou2TNsjA/SiJbPD+0OpsLAcW1c/DeoM+TAkZo0JIlgxjcJ5ZlEbJ0Mxv6m9XK
k3bbMYHtKmZl+fzfPNcxCuK8Djnm5mYVR9KX1L86m1jz2kUQT/+wW84QRnZ7G+z8
4rQ77sZvWiIwwO2JmUvIsYeUxEP6/keZbDRuyO/2tWk/VxqQry4+Ktix/M2/iKWo
QQIDAQAB
-----END PUBLIC KEY-----