code: @Override
  	public byte[] encrypt(byte[] data, KeyType keyType) throws CryptoException {
  		if (KeyType.PublicKey != keyType) {
  			throw new IllegalArgumentException("Encrypt is only support by public key");
  		}
  		ckeckKey(keyType);
  
  		lock.lock();
  		final SM2Engine engine = getEngine();
  		try {
  			engine.init(true, new ParametersWithRandom(getCipherParameters(keyType)));
  			return engine.processBlock(data, 0, data.length);
  		} finally {
  			lock.unlock();
  		}
  	}
docs: 加密，SM2非对称加密的结果由C1,C2,C3三部分组成，其中：
  
  <pre>
  C1 生成随机数的计算出的椭圆曲线点
  C2 密文数据
  C3 SM3的摘要值
  </pre>
  
  @param data 被加密的bytes
  @param keyType 私钥或公钥 {@link KeyType}
  @return 加密后的bytes
  @throws CryptoException 包括InvalidKeyException和InvalidCipherTextException的包装异常