code: private void updateFullBuildDigest(Mac digest) throws IllegalStateException, UnsupportedEncodingException {
          digest.update(Validator.notNull(apiKey, "apiKey not null").getBytes(charset));
          digest.update(delimiter);
          digest.update(Validator.notNull(contentType, "contentType not null").getBytes(charset));
          digest.update(delimiter);
          digest.update(Validator.notNull(date, "date not null").getBytes(charset));
          digest.update(delimiter);
          digest.update(Validator.notNull(host, "host not null").getBytes(charset));
          digest.update(delimiter);
          digest.update(Validator.notNull(method, "method not null").getBytes(charset));
          digest.update(delimiter);
          digest.update(Validator.notNull(nonce, "nonce not null").getBytes(charset));
          if (!Validator.isEmpty(payload)) {
              digest.update(delimiter);
              digest.update(Validator.notEmpty(payload, "payload not empty"));
          }
          digest.update(delimiter);
          digest.update(Validator.notNull(resource, "resource not null").getBytes(charset));
          digest.update(delimiter);
          digest.update(Validator.notNull(scheme, "scheme not null").getBytes(charset));
          digest.update(delimiter);
      }
docs: 完整的数据运算