code: public byte[] digest(byte[] data) {
  		byte[] result = null;
  		if (this.saltPosition <= 0) {
  			// 加盐在开头，自动忽略空盐值
  			result = doDigest(this.salt, data);
  		} else if (this.saltPosition >= data.length) {
  			// 加盐在末尾，自动忽略空盐值
  			result = doDigest(data, this.salt);
  		} else if (ArrayUtil.isNotEmpty(this.salt)) {
  			// 加盐在中间
  			this.digest.update(data, 0, this.saltPosition);
  			this.digest.update(this.salt);
  			this.digest.update(data, this.saltPosition, data.length - this.saltPosition);
  			result = this.digest.digest();
  		} else {
  			// 无加盐
  			result = doDigest(data);
  		}
  
  		return resetAndRepeatDigest(result);
  	}
docs: 生成摘要，考虑加盐和重复摘要次数
  
  @param data 数据bytes
  @return 摘要bytes