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; } ?>
网友评论0