code: public static String stream(InputStream in, long len) throws IOException {
          if (len == 0) {
              return "Fto5o-5ea0sNMlW_75VgGJCv2AcJ";
          }
          byte[] buffer = new byte[64 * 1024];
          byte[][] blocks = new byte[(int) ((len + Configuration.BLOCK_SIZE - 1) / Configuration.BLOCK_SIZE)][];
          for (int i = 0; i < blocks.length; i++) {
              long left = len - (long) Configuration.BLOCK_SIZE * i;
              long read = left > Configuration.BLOCK_SIZE ? Configuration.BLOCK_SIZE : left;
              blocks[i] = oneBlock(buffer, in, (int) read);
          }
          return resultEncode(blocks);
      }
docs: 计算输入流的etag
  
  @param in  数据输入流
  @param len 数据流长度
  @return 数据流的etag值
  @throws IOException 文件读取异常