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

时间:2017-01-23 08:31:30

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

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

要真正测试它们,我想我只想模拟私钥和公钥。这是否可行?如果不在我的代码库中添加任何敏感信息,我将如何模拟这些密钥?

当然,我可以绕过openssl public / private部分并嘲笑它的结果,但是这个逻辑也引发了一些例外,等等我想测试。

1 个答案:

答案 0 :(得分:2)

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

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以获取有关密钥的详细信息,包括公钥

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