Java 与 Python 国密算法 SM2 交互使用(qbit)

前言

原因

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

你可能感兴趣的:(签名校验加密解密)