php - 在单元测试中模拟私钥/公钥?

标签 php phpunit public-key-encryption php-openssl

目前我有一个使用 openssl_public_encrypt/openssl_private_decrypt 的代码库。现在我想用单元测试来测试我的加密和解密方法,因为这些非常重要。

为了真正测试它们,我想我想简单地模拟私钥和公钥。这可行吗?我如何在不将任何敏感信息放入我的代码库的情况下模拟这些 key ?

当然,我可以绕过 openssl 公共(public)/私有(private)部分并模拟其结果,但这种逻辑也会引发一些异常等,我想测试一下。

最佳答案

如果您安装并启用了 PHP 的 OpenSSL 扩展,那么您可以使用 OpenSSL 函数生成公钥/私钥对:

openssl_pkey_new , 对于 private key 有:

$private_key = openssl_pkey_new([
    'digest_alg' => 'sha256',
    'private_key_bits' => 1024,
    'private_key_type' => OPENSSL_KEYTYPE_RSA
]);

然后将私钥传给openssl_pkey_get_details获取有关 key 的详细信息,包括公钥:

$details = openssl_pkey_get_details($private_key);
$public_key = $details['key'];

关于php - 在单元测试中模拟私钥/公钥?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41801956/

相关文章:

php - 使用 PHP 屏蔽图像生成 CGI 脚本的 URL

php - 为什么在 bool 类型上转换 bool 返回总是 false

php - 单元测试和对象继承

laravel - 如何仅在 phpunit 测试中更改硬编码的 Eloquent $connection?

c# - 使用 BigInteger 的 Rsa 实现不适用于大数字

azure - 如何使用 ssh-keygen 生成顶部有 ---- BEGIN SSH2 PUBLIC KEY ---- 的公钥?

php - 从 php 脚本登录/var/log 时权限被拒绝

PHP Yield,奇怪的行为

phpunit - 如果调试客户端未在监听,则 xdebug.start_start_with_request=yes WITHOUT 错误

java - Android:使用 Assets 目录中存储的 key 文件初始化 PublicKey