pom.xml
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.7.18</version>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15to18</artifactId>
<version>1.67</version>
</dependency>
Test.java
import cn.hutool.core.io.FileUtil;
import cn.hutool.crypto.asymmetric.KeyType;
import cn.hutool.crypto.asymmetric.SM2;
// 直接在 A0001.key 中复制的
String privateKey = "2880970b3cc16d09b7eedbf7b5f4af9e5e18c2f3a9ed488ec5a1b08f75d1899f";
// 需要用 SM2 解密的 .key 文件
String filePath = "D:\\target.key";
SM2 sm2 = new SM2(privateKey, null);
byte[] decrypt = sm2.decrypt(FileUtil.readBytes(filePath), KeyType.PrivateKey);
FileUtil.writeBytes(decrypt, "D:\\res.key");
from gmssl import sm2
# 直接在 A0001.key 中复制的
A0001_key = "2880970b3cc16d09b7eedbf7b5f4af9e5e18c2f3a9ed488ec5a1b08f75d1899f"
source_path = "D:\\target.key"
target_key = "D:\\res.key"
with open(source_path , 'rb') as f, open(target_key , 'wb') as w:
sm2_crypt = sm2.CryptSM2(public_key=None, private_key=private_key)
info = sm2_crypt.decrypt(f.read())
w.write(info)