PHP生成RSA/ECC密钥对

使用PHP生成RSA/ECC密钥对,可用于签发证书、微信/支付宝支付签名等。

<?php
$options = [
    'private_key_bits' => 384,
    'private_key_type' => OPENSSL_KEYTYPE_EC,
    'curve_name' => 'secp384r1',
    'config' => __DIR__ . '/openssl.cnf',
];
$private_key = openssl_pkey_new($options);
$keyDetail = openssl_pkey_get_details($private_key);

$publicKey = $keyDetail['key'];

$result = openssl_pkey_export($private_key, $privateKey, null, $options);

openssl_pkey_free($private_key);

echo json_encode(compact('privateKey', 'publicKey'), 256 | 128);

/*
{
    "privateKey": "-----BEGIN EC PRIVATE KEY-----\nMIGkAgEBBDAmtrPgKoBN3pyuxqhbLerF7R1z34wM4+A6KZ9mVuILcRQMMg\/1R7al\nIBi1nloOsg6gBwYFK4EEACKhZANiAAQfI7zwMKkTd2mSdPDkOmLWlpi\/4rw30Kvw\n5k4G3Hv+gx6Nz6n1wKL7syRCvlG9JX2k+5UecsUfe1N6j+4QVQdF78pFp9paHIKg\n9opts2wcfM28sRmqcxn7o5JpqtXMc1Y=\n-----END EC PRIVATE KEY-----\n",
    "publicKey": "-----BEGIN PUBLIC KEY-----\nMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEHyO88DCpE3dpknTw5Dpi1paYv+K8N9Cr\n8OZOBtx7\/oMejc+p9cCi+7MkQr5RvSV9pPuVHnLFH3tTeo\/uEFUHRe\/KRafaWhyC\noPaKbbNsHHzNvLEZqnMZ+6OSaarVzHNW\n-----END PUBLIC KEY-----\n"
}
*/

openssl.cnf

HOME			= .
RANDFILE		= $ENV::HOME/.rnd
生成ECC椭圆算法密钥对的options-两个推荐的曲线
//推荐最低384
$options = [
    'private_key_bits' => 256,
    'private_key_type' => OPENSSL_KEYTYPE_EC,
    'curve_name' => 'prime256v1',
    'config' => __DIR__ . '/openssl.cnf',
];

$options = [
    'private_key_bits' => 384,
    'private_key_type' => OPENSSL_KEYTYPE_EC,
    'curve_name' => 'secp384r1',
    'config' => __DIR__ . '/openssl.cnf',
];
RSA 参数
$options = [
    'private_key_bits' => 2048 ,
    'private_key_type' => OPENSSL_KEYTYPE_RSA ,
    'config' => __DIR__ . '/openssl.cnf',
];

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Anlige

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值