/** * SM3计算. * * @param datas * 待计算的数据 * @return 计算结果 */ private static byte[] sm3(byte[] data) { SM3Digest sm3 = new SM3Digest(); sm3.update(data, 0, data.length); byte[] result = new byte[sm3.getDigestSize()]; sm3.doFinal(result, 0); return result; }
private byte[] digestDoFinal() { byte[] result = new byte[digest.getDigestSize()]; digest.doFinal(result, 0); reset(); return result; }
public static byte[] hash(byte[] srcData) { SM3Digest digest = new SM3Digest(); digest.update(srcData, 0, srcData.length); byte[] hash = new byte[digest.getDigestSize()]; digest.doFinal(hash, 0); return hash; }
/** * SM3计算. * * @param datas * 待计算的数据 * @return 计算结果 */ private static byte[] sm3(byte[] data) { SM3Digest sm3 = new SM3Digest(); sm3.update(data, 0, data.length); byte[] result = new byte[sm3.getDigestSize()]; sm3.doFinal(result, 0); return result; }
private byte[] getZ(byte[] userID) { digest.reset(); addUserID(digest, userID); addFieldElement(digest, ecParams.getCurve().getA()); addFieldElement(digest, ecParams.getCurve().getB()); addFieldElement(digest, ecParams.getG().getAffineXCoord()); addFieldElement(digest, ecParams.getG().getAffineYCoord()); addFieldElement(digest, pubPoint.getAffineXCoord()); addFieldElement(digest, pubPoint.getAffineYCoord()); byte[] result = new byte[digest.getDigestSize()]; digest.doFinal(result, 0); return result; }
public static byte[] getSM2Z(byte[] userID, ASN1ObjectIdentifier curveOid, BigInteger pubPointX, BigInteger pubPointY) { SM3Digest digest = new SM3Digest(); addUserId(digest, userID); X9ECParameters ecParams = GMNamedCurves.getByOID(curveOid); addFieldElement(digest, ecParams.getCurve().getA()); addFieldElement(digest, ecParams.getCurve().getB()); addFieldElement(digest, ecParams.getG().getAffineXCoord()); addFieldElement(digest, ecParams.getG().getAffineYCoord()); int fieldSize = (ecParams.getCurve().getFieldSize() + 7) / 8; byte[] bytes = BigIntegers.asUnsignedByteArray(fieldSize, pubPointX); digest.update(bytes, 0, fieldSize); bytes = BigIntegers.asUnsignedByteArray(fieldSize, pubPointY); digest.update(bytes, 0, fieldSize); byte[] result = new byte[digest.getDigestSize()]; digest.doFinal(result, 0); return result; }