前言

原因

  • 开始 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))

后语

  • 如果觉得 gmssl 不对头,可以尝试 gmalg
本文出自 qbit snap

qbit
268 声望279 粉丝

引用和评论

0 条评论