前言
- Java 庫 https://github.com/dromara/hu...
- Python 庫 https://github.com/duanhongyi...
- 背景:Java
hutool
庫生成的金鑰,Pythongmssl
簽名校驗不透過,折騰了很久才找到原因
原因
開始
hutool
這樣生成的金鑰,gmssl
死活通不過簽名校驗SM2 sm2 = new SM2(); sm2.setMode(SM2Engine.Mode.C1C2C3); sm2.setDigest(new SM3Digest()); privateKey = HexUtil.encodeHexStr(sm2.getPrivateKey().getEncoded()) publicKey = HexUtil.encodeHexStr(sm2.getPublicKey().getEncoded())
hutool
正確生成金鑰的方式privateKey = HexUtil.encodeHexStr(sm2.getD()) publicKey = HexUtil.encodeHexStr(sm2.getQ(false)) // 公鑰不壓縮 // 等價於 privateKey = HexUtil.encodeHexStr(BCUtil.encodeECPrivateKey(sm2.getPrivateKey())) publicKey = HexUtil.encodeHexStr(((BCECPublicKey) sm2.getPublicKey()).getQ().getEncoded(false))
本文出自 qbit snap