Openssl之SM2加解密命令

bash 复制代码
### 1. 生成 SM2 私钥

openssl genpkey -algorithm EC \
    -pkeyopt ec_paramgen_curve:sm2 \
    -out sm2_private_key.pem

### 2. 从私钥导出 SM2 公钥

openssl pkey -in sm2_private_key.pem \
    -pubout \
    -out sm2_public_key.pem

### 3. 使用 SM2 公钥加密

openssl pkeyutl -encrypt \
    -pubin \
    -inkey sm2_public_key.pem \
    -in plaintext.txt \
    -out sm2_ciphertext.bin

### 4. 使用 SM2 私钥解密

openssl pkeyutl -decrypt \
    -inkey sm2_private_key.pem \
    -in sm2_ciphertext.bin \
    -out decrypted.txt

上面的命令在Openssl v3.0(ubuntu22)版本上验证成功

使用openssl动态库开发的程序生成的密钥和密文可能如下,使用上面的openssl命令可以解密成功

bash 复制代码
Public Key (PEM format):
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEAAIEhX4KGgCzDshA1K7SBZ6SGSZb
djvANDlquERbZKBXGva8+NUX9a65CdxDjTKWCFdtSZWUGWwtjMgsVgiRkQ==
-----END PUBLIC KEY-----

Private Key (PEM format):
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBG0wawIBAQQg+5SVAPfUpskiT/MB
JoqsPBO6r7nGbheDqO0q2GPJLXahRANCAAQAAgSFfgoaALMOyEDUrtIFnpIZJlt2
O8A0OWq4RFtkoFca9rz41Rf1rrkJ3EONMpYIV21JlZQZbC2MyCxWCJGR
-----END PRIVATE KEY-----

加密后的密文:
hexdump -C data.bin
00000000  30 81 80 02 21 00 a4 79  b0 28 98 6a a8 00 34 60  |0...!..y.(.j..4`|
00000010  ee c2 2e 06 9c 14 54 1c  67 ff f0 47 6a d0 01 5d  |......T.g..Gj..]|
00000020  0b 46 15 eb d0 47 02 21  00 a9 cd f8 4e 3b 2a 12  |.F...G.!....N;*.|
00000030  7e 9f 66 c7 cb 75 35 79  99 7e a1 f4 14 7d 5b e7  |~.f..u5y.~...}[.|
00000040  b6 7f 78 cf 41 ec ca e6  ed 04 20 94 a2 29 79 5b  |..x.A..... ..)y[|
00000050  cc e9 4c 75 c6 27 e6 cb  1d 06 be 52 e0 39 d5 61  |..Lu.'.....R.9.a|
00000060  a6 ee 1e fe fe 78 94 00  16 15 d0 04 16 61 38 e3  |.....x.......a8.|
00000070  5c cc 88 4a b7 dd f0 e2  2f 10 4a 85 a5 c7 3c 8d  |\..J..../.J...<.|
00000080  28 c3 21                                          |(.!|
00000083

暂时没有解决自定义SM2 ID问题!

相关推荐
christine-rr1 小时前
密码学基础——古典密码学
密码学
Мартин.1 小时前
[CISSP] [5] 保护资产安全
数据库·安全·oracle
一只小白跳起来3 小时前
重新安装VMware tools为灰色无法点击问题解决|读取电脑文件的共享文件夹方法
运维·ubuntu·vmware
跳跳糖炒酸奶3 小时前
第四章、Isaacsim在GUI中构建机器人(2):组装一个简单的机器人
人工智能·python·算法·ubuntu·机器人
odoo-卜永3 小时前
ubuntu22.04连接爱普生打印机型号L385
linux·经验分享·ubuntu
小麦嵌入式4 小时前
Linux驱动开发实战(十一):GPIO子系统深度解析与RGB LED驱动实践
linux·c语言·驱动开发·stm32·嵌入式硬件·物联网·ubuntu
zhu12893035564 小时前
网络安全的重要性与防护措施
网络·安全·web安全
渗透测试老鸟-九青5 小时前
面试经验分享 | 成都渗透测试工程师二面面经分享
服务器·经验分享·安全·web安全·面试·职场和发展·区块链
网络研究院5 小时前
ChatGPT 的新图像生成器非常擅长伪造收据
网络·人工智能·安全·chatgpt·风险·技术·欺诈
写代码的小王吧6 小时前
【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~
java·开发语言·网络·安全·web安全·网络安全·jar