php openssl_public_encrypt公钥加密出现无效公钥问题

php openssl_public_encrypt公钥加密出现无效公钥问题

php openssl_public_encrypt公钥加密出现无效公钥问题

最近在用公钥与私钥加密的时候出现了这个问题

Warning: openssl_public_encrypt(): key parameter is not a valid public key in

经过查找,原来是在RSA加密处理时,经常遇到RSA密钥为一行,但是在Linux下,需要换行处理,否则,无法进行加密处理。换行,只能按照指定的规则换行,否则无法加密,下面介绍下标准处理方:

<?php
//将公钥字符串转成标准的公钥格式内容
function convertpubkey($keyvalue){
$start_key      = str_replace('-----BEGIN PUBLIC KEY-----', '', $keyvalue);
$start_key      = trim(str_replace('-----END PUBLIC KEY-----', '', $start_key));
$public_content = wordwrap($start_key, 64, "\n", true);
$key            = <<<EOF
-----BEGIN PUBLIC KEY-----
{$public_content}
-----END PUBLIC KEY-----
EOF;
return $key;
}
//将私钥字符串转成标准的私钥格式内容
function convertprikey($keyvalue){
$start_key       = str_replace('-----BEGIN RSA PRIVATE KEY-----', '', $keyvalue);
$start_key       = trim(str_replace('-----END RSA PRIVATE KEY-----', '', $start_key));
                //wordwrap 按照指定的长度,对字符串进行换行
$private_content = wordwrap($start_key, 64, "\n", true);
 $key             = <<<EOF
-----BEGIN RSA PRIVATE KEY-----
{$private_content}
-----END RSA PRIVATE KEY-----
EOF;
return $key;
}
?>

{{collectdata}}

网友评论0