php - openssl_public_encrypt():此 PHP 版本不支持密钥类型
问题描述
我看到很多问题看起来像我的,有点确定它不是同一个问题。
环境:PHP版本7.1.33-15+ubuntu16.04.1+deb.sury.org+1,openssl-1.1.1g
我想用sm2曲线加密数据,公钥\私钥都是openssl生成的,命令:</p>
./openssl ecparam -genkey -name SM2 -out priv.key
./openssl ec -in priv.key -pubout -out pub.key
然后我在php上试试:
$pubKey = openssl_pkey_get_public('-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAE6ULQ5Zxk6rePcMERuONCk0L9R7Bz
GdTTsqAxtEYSQAspJZu5wurPz8sq79WW7ELnjZaXi5o/x8NJ1NabCOoEgg==
-----END PUBLIC KEY-----');
openssl_public_encrypt($data, $encrypted_data, $pubKey, $padding=OPENSSL_NO_PADDING);
当我得到 $pubKey 时很好,加密时出错:
openssl_public_encrypt():此 PHP 版本不支持密钥类型!
并且没有其他错误,为什么 php 无法读取 sm2 pubKey?(可用曲线肯定包括 sm2)。感谢您在遇到像我这样的错误时给我任何答案或链接,如果您需要了解更多信息,请随时询问。
解决方案
推荐阅读
- python - 使用字典映射在数据框中创建新列
- java - 当用户输入 -1 并打印结果时,如何使以下程序(使用方法)计算所有输入的用户提要?
- android - 了解 Android Stacktrace
- excel - 单元格在 Worksheet_Chnage 事件中以无法解释的方式锁定
- c# - 重新进入时取消异步方法的模式
- jquery - 累积布局移位和jquery
- python - 当有超过 2 个对时,解决合并和排序对问题
- python - 查找 Canny 边缘检测器检测到的线条的坐标
- apache-spark - 使用 Avro Schema 将 Hudi 与 Kafka 集成的问题
- bash - 如何通过cronjob将输出永久导出为环境变量?