在单元测试中模拟 private/public 键?
Mock a private/public key in a unit test?
目前我有一个使用 openssl_public_encrypt/openssl_private_decrypt
的代码库。现在我想通过单元测试来测试我的加密和解密方法,因为它们非常重要。
为了真正测试它们,我想我想简单地模拟私钥和 public 密钥。这可行吗?我将如何在不将任何敏感信息放入我的代码库的情况下模拟这些键?
当然我可以绕过 openssl public/private 部分并模拟它的结果,但是这个逻辑也会抛出一些异常等,我想测试一下。
如果您安装并启用了 PHP 的 OpenSSL 扩展,那么您可以使用 OpenSSL 函数生成 public/private 密钥对:
openssl_pkey_new,对于 私钥 有:
$private_key = openssl_pkey_new([
'digest_alg' => 'sha256',
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_RSA
]);
然后将私钥传递给openssl_pkey_get_details以获取有关密钥的详细信息,包括public密钥:
$details = openssl_pkey_get_details($private_key);
$public_key = $details['key'];
目前我有一个使用 openssl_public_encrypt/openssl_private_decrypt
的代码库。现在我想通过单元测试来测试我的加密和解密方法,因为它们非常重要。
为了真正测试它们,我想我想简单地模拟私钥和 public 密钥。这可行吗?我将如何在不将任何敏感信息放入我的代码库的情况下模拟这些键?
当然我可以绕过 openssl public/private 部分并模拟它的结果,但是这个逻辑也会抛出一些异常等,我想测试一下。
如果您安装并启用了 PHP 的 OpenSSL 扩展,那么您可以使用 OpenSSL 函数生成 public/private 密钥对:
openssl_pkey_new,对于 私钥 有:
$private_key = openssl_pkey_new([
'digest_alg' => 'sha256',
'private_key_bits' => 1024,
'private_key_type' => OPENSSL_KEYTYPE_RSA
]);
然后将私钥传递给openssl_pkey_get_details以获取有关密钥的详细信息,包括public密钥:
$details = openssl_pkey_get_details($private_key);
$public_key = $details['key'];