不依赖PHPSeclib验证RSA私钥与密码是否匹配
使用PHP原生OpenSSL验证RSA私钥与密码短语匹配
直接用openssl_pkey_get_private()就能实现,关键是正确传递参数。针对-----BEGIN RSA PRIVATE KEY-----格式的加密私钥,实现代码如下:
function verifyPassphraseMatchesPrivateKey(string $privateKeyString, string $passphrase): bool { // 尝试加载私钥,第二个参数传入密码短语 $keyResource = openssl_pkey_get_private($privateKeyString, $passphrase); // 加载成功说明密码匹配,否则不匹配 $matchResult = $keyResource !== false; // 加载成功后记得释放资源,避免内存泄漏 if ($keyResource !== false) { openssl_free_key($keyResource); } return $matchResult; }
关键注意点
- 之前调用
openssl_pkey_get_private()失败,通常是这两个原因:密码短语错误,或者私钥格式不规范(比如缺失必要的换行符、包含多余空格) - 这个实现仅适配PKCS#1格式的RSA私钥(即你指定的
-----BEGIN RSA PRIVATE KEY-----开头的类型),无需额外处理其他格式
内容的提问来源于stack exchange,提问作者4thfloorstudios
相关产品推荐
相关产品推荐

