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

问题描述:

目前我的代码库使用openssl_public_encrypt/openssl_private_decrypt。现在我想用单元测试来测试我的加密和解密方法,因为这些非常重要。在单元测试中模拟私钥/公钥?

要真正测试它们,我想我只是简单地模拟私钥和公钥。这是可行的,我将如何去嘲笑这些密钥而不在我的代码库中提供任何敏感信息?

当然,我可以规避openssl public/private部分并模拟结果,但是这个逻辑也抛出了一些我想测试的异常等。

+0

从描述中不太清楚你想要测试什么以及是什么问题。生成一个新的私钥/公钥对并将其用于测试(并将其放入存储库中)。只要它们不用于真实系统的身份验证,它们就不是敏感信息。 – axiac

如果你已经安装了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'];