pem加密php,PHP格式化RSA公钥私钥(pem文件)

Last updated on 2021年1月20日

问题描述:

JAVA丢过来一串字符串说是RSA公/私钥,直接用于加密时提示失败。PHP是需要转为pem格式后才能使用,这里记录一下。

环境:

PHP 72

使用openss_*函数簇

代码如下:

pem格式以64位长度换行分割,前后分别加上公私钥分割标志生成。

$publicKey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwwJTNyd42qDZug/sPxzLSddApwfL9IXXqgRiCZ2QDjrpE/KcxrObYHqtU6xQqz1GLJkSbrZWS/2M0/Bf3QE60CMIjOAHkxX6hBE7kfkMXKrMf8w16N8GOcG/RnSIl4HtZGwj9zRIGHDVUKlpjd2EvIzl02cFe7zF8yf8zUiXBvQIDAQAB';

$privateKey = 'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBALDAlM3J3jaoNm6D+w/HMtJ10CnB8v0hdeqBGIJnZAOOukT8pzGs5tgeq1TrFCrPUYsmRJutlZL/YzT8F/dATrQIwiM4AeTFfqEETuR+Qxcqsx/zDXo3wY5wb9GdIiXge1kbCP3NEgYcNVQqWmN3YS8jOXTZwV7vMXzJ/zNSJcG9AgMBAAECgYAbw/TcKuTsYxpB3Bu5S8pxAy7TEHOSTgpO7z6hZYpxgJ9ELQg6pnWQ56h0a4U8gFrH6BgI+IixkcrMzPkazxBNtpLR1YZEIGq/9fY6hfPA7L6sVHULebuU3y4IQX3oZkmnSjTv+4uTE9q2prPsOPkSbRmPmBp+Wk7KLOhDRullRQJBAOtECul2kEvM1aPDo2A3D32+hGQ/zs/fx8DFJaFq9P5KAwaDE4knvLhwwSk3I5V4QljwJL2TnEvaskRcxU5LzusCQQDAVGJARLfMwGGzsVAVHPE1dRc3I87+xSPKxgOZfTSCWywPMi9hynEwsoiTNrjJIrRjid+yfoPhTXqiOFHvvhf3AkEAnR58Cx7bj0PlCdGGMqOS/O9Xi3vxqnJQ/TSsxPihVZIoIxk22spnBuaGmffxE8mUxcDbSKBkKWSM2Yr7WibWsQJBALvBJPEspGmD3V04Wb9is67GEdXIZUidV2WajOUIL3yaWJa1HUBQCtPJVj6wiw//iy4o6HItw7zskC1Q4dwzLN0CQEf+7nEzIAFBp6XzvcDc7x8wn8sn2P6BKowEUd6f6Xrr/orb5E2T3NAz+bH/6gFkFqt+WfdQ/CCwNIB04GG8KLs=';

$pubPem = chunk_split($publicKey,64,"\n");

$pubPem = "-----BEGIN PUBLIC KEY-----\n" . $pubPem . "-----END PUBLIC KEY-----\n";

var_dump($pubPem);

// 验证公钥格式是否正确

$pu_key = openssl_pkey_get_public($pubPem);

if (!$pu_key) die('$pu_key 格式不正确');

$priPem = chunk_split($privateKey,64,"\n");

$priPem = "-----BEGIN PRIVATE KEY-----\n" . $priPem . "-----END PRIVATE KEY-----\n";

var_dump($priPem);

// 验证私钥格式是否正确

$pi_key = openssl_pkey_get_private($priPem);

if (!$pi_key) die('$pi_key 格式不正确');

验证:

使用 openssl_pkey_get_public() 、openssl_pkey_get_private() 来验证,返回值为 true 验证通过

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值