服务器openssl-ext-sm2安装
PHP sm2 国密扩展-CSDN博客文章浏览阅读6.1k次,点赞2次,收藏8次。基于openssl密码库编写的SM2椭圆曲线公钥密码算法PHP扩展特性:非对称加密git地址:https://gitee.com/state-secret-series/openssl-ext-sm2.git。_php sm2
https://blog.csdn.net/qq_39316391/article/details/126240650
注意事项解密/加密
//解密
#传递过来的解密数据要加上04
$encryptedData ='04'.'fa970402b3b2688e9ef62b534b1445a0d33ca80dcc2cff6e29fe5dce429d754055f50264dc5574b61edc49f5bf97cc2b54895fd0931f06d5661b0668806e6f0b895ba5813bc6aa97b2ee1906ec0218def1fe961ff683bba81194d0970af7fcceb32db4622aaf';
#私钥
$privateKey = 'b354db114404938da6b8c911bece2e83f1da1a9a717c258410796fc0734ad66d';
#把结果值转换为二进制
$encryptedData = pack("H*", $encryptedData);
#把私钥转换为二进制
$privateKey = pack("H*", $privateKey);
#正常解密
sm2_decrypt($encryptedData, $string, $privateKey);
echo $string;
//加密注意事项
#公钥加密
sm2_encrypt($msg, $encrypt, $pub_key);
#返回给前端的值要进行二进制到十六进制的转换,示例如下
$encrypt = unpack("H*", $encrypt)[1];
#如果是通过sm2_key_pair生成的公钥私钥,私钥需要转换为十六进制再给前端,示例如下
$pri_key = unpack("H*", $pri_key)[1];