我对使用这些私钥和公钥加密数据完全陌生。许多教程教如何生成和签署数据,但缺少有关如何实际使用这些密钥的信息。
使用 OpenSSL 生成公钥和 PKCS8 私钥后该怎么办?
我是否应该手动将公钥交给负责相应请求服务器的人员?或者有某种特定或特殊的方式可以使用 API 请求中的脚本发送或包含它?
如果 .pem 私钥使用 PKCS8 编码,那么这段代码是否足以将数据签名为签名?
$private_key = openssl_pkey_get_private($path_to_key);
$data = 'Text to sign';
openssl_sign($data, $signature, $private_key);
openssl_free_key($private_key);
公钥加密是一种使用两个不同密钥对数据进行加密或签名并使其中一个密钥(即公钥)可供任何人使用的方法。
另一个密钥称为私钥。用公钥加密的数据只能用私钥解密。私钥代表您的身份。任何知道它的人都可以用它来冒充您。决不应该与您不信任的任何人分享它,让他们能够像您一样行事。
对于 PHP 生成 PKCS8 公钥/私钥,您可以使用 phpseclib PHP 库。请参阅官方网站
下载并解压后,您可以使用以下标准PHP代码来生成私钥和公钥:
<?php
include('Crypt/RSA.php');
$rsa = new Crypt_RSA();
$rsa->setPrivateKeyFormat(CRYPT_RSA_PRIVATE_FORMAT_PKCS8);
$rsa->setPublicKeyFormat(CRYPT_RSA_PUBLIC_FORMAT_PKCS8);
extract($rsa->createKey());
echo "Private Key (PKCS8) :<br><br>";
echo $privatekey . "<br><br>";
echo "Public Key (PKCS8) :<br><br>";
echo $publickey;