当在MacOS和Ubuntu上运行以下代码片段时,来自zlib.gzipSync的明文响应给出不同的数据.

const zlib = require('zlib');
let hash = zlib.gzipSync(JSON.stringify({ "foo": "bar" })).toString('base64');
console.log(hash);

NodeJS版本:v14.19.1

H4sIAAAAAAAAE6tWSsvPV7JSSkosUqoFAO/1K/4NAAAA->Mac输出

H4sIAAAAAAAAA6tWSsvPV7JSSkosUqoFAO/1K/4NAAAA->Ubuntu输出

理想情况下,这个散列在不同平台之间不应该是相同的吗?

推荐答案

这不是一个"散列",而且不,在不同平台上是完全不同的.在这种情况下,操作系统字节在gzip标头中有所不同.

您可以预期压缩数据流在其他方面也会有所不同.有时,修改后的时间戳设置在gzip报头中.然后,即使在同一台机器上,您也可以获得不同的流.对于较大的压缩数据,不同的压缩代码、相同代码的不同版本或不同的压缩级别将提供不同的数据.

重要的是,原始数据在解压缩时会被准确地恢复.

Node.js相关问答推荐

链接Inbox类方法,范围在哪里以及为什么发生变化?

使用NodeJS在S3上传文件时的格式问题

错误:找不到模块';/var/apps/前端/bash';

如何更改ejs中的镜像src,以防从OMDB API获取的某些镜像具有src=N/A

如何在ejs模板中使用循环显示多个结果?

设置默认 node 版本

类扩展值[object object]不是构造函数或null

构建期间 Docker 容器中的 npm 安装失败

SvelteKit应用程序立即退出,没有错误

使用更新版本仍然找到包@angular/fire但不支持原理图

$not 的聚合版本是什么?

如何使用 Remix 仅在客户端呈现组件?

如何使用 $PATH 变量在系统中全局自动安装 bash 脚本?或者重写脚本到node

看起来这段代码try GET 请求发送的值变为空白

提供静态文件到底是什么意思?

使用 nvm-windows 时更新 npm

Node.js 中空函数的简写

如何仅在丢失的路由上将 Express.js 设置为 404?

NPM:为什么要安装这个包?

如何在 node.js 沙箱中安全地运行用户提交的脚本?