上代码:
<?php
//生成rsa公钥私钥
$methods = openssl_get_md_methods();
echo "<pre>";
print_r($methods);
echo "</pre>";
createKey();
function createKey(){
$config = [
'digest_alg'=>'SHA256', //摘要算法或签名哈希算法,通常是 openssl_get_md_methods() 之一。
'private_key_bits'=>2048,
'private_key_type'=>OPENSSL_KEYTYPE_RSA,
];
$res = openssl_pkey_new($config);
//提取私钥
openssl_pkey_export($res, $private_key);
//生成公钥
$public_key = openssl_pkey_get_details($res);
// var_dump($public_key);
$public_key=$public_key["key"];
//显示数据
echo "<pre>"; //私钥
print_r($private_key);
echo "</pre>";
file_put_contents('private.pem', $private_key);
echo "<pre>"; //公钥
print_r($public_key);
echo "</pre>";
file_put_contents('public.pem', $public_key);
$keyInfo = openssl_pkey_get_details(openssl_pkey_get_public($public_key));
$jsonData = [
'kty' => 'RSA',
'n' => rtrim(str_replace(['+', '/'], ['-', '_'], base64_encode($keyInfo['rsa']['n'])), '='),
'e' => rtrim(str_replace(['+', '/'], ['-', '_'], base64_encode($keyInfo['rsa']['e'])), '='),
'use'=>'sig'
];
echo $jwk = json_encode($jsonData);
file_put_contents('public.jwk',$jwk);
}