最近公司需要使用OpenSSL的加密和Java端进行接口验证。测试环境升级到PHP7时,加密会出现错误。后来各种检查终于找到原因:在PHP7环境下,把openssl_get_privatekey方法改成openssl_pkey_get_private需要转换秘钥。window环境下的key格式和linux环境下的不一样(不知道是不是操作系统的关系)。PHP密钥校验需要加上开头和结尾。这是转换密钥格式的附加方法:functiontransJavaRsaKeyToPhpOpenSSL($content){if($content){returntrim(chunk_split($content,64,"\n"));}返回假;}添加头尾方法:functionappendFlags($content,$isPublic=true){if($isPublic){return"-----BEGINPUBLICKEY-----\n".$内容。"\n-----结束公钥-----\n";}else{return"-----BEGINPRIVATEKEY-----\n".$内容。"\n-----结束私钥-----\n";}}踩了坑才知道还有很多东西要学
