问题标签 [adler32]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
554 浏览

python - 将哈希码转换为其二进制表示

我使用 Adler32 算法计算“热带”这个词的哈希码。结果是数字“260768607”如何将上述数字转换为其二进制表示?谢谢

0 投票
2 回答
407 浏览

php - PHP中滚动哈希的快速实现

我已经在 PHP 中实现了 Adler32 滚动哈希,但是因为ord在字符串中获取吟唱者的整数值非常慢(在我的开发机器上大约每秒 1MB),所以这个解决方案对于 100MB 以上的文件是不可行的。

PHP 的 mhash 函数可以非常快速地计算 adler32(在我的开发机器上每秒 120MB)。然而 mhash 似乎不支持 adler32 的滚动特性,因此您必须在滚动窗口移动时计算一个全新的 adler32,而不仅仅是重新计算实际发生变化的两个字节的哈希值。

我不依赖于 adler32 算法,我只需要一个非常快速的 PHP 滚动哈希。

0 投票
2 回答
498 浏览

c - 带有 IDAT 的调色板基础 PNG,BTYPE=00 用于无压缩,现在使用 Adler32 代码

我正在编写一些代码,这些代码在没有 libpng 的情况下构建基于简单调色板的 PNG 文件。在这个阶段,输出文件只有 IHDR、PLTE、IDAT(x3) 和 IEND 块。唯一可能有点不同的是 IDAT 块中的像素索引值没有被压缩,即各种 zlib / 块头字节如下。

  • CMF = 0x78。
  • FLG = 0x9C(这里还有一些其他值,但始终清除第 5 位)。
  • 块头字节 = 0x01 (BFINAL = 1, BTYPE = 00)。

从我可以看到的代码正确地构建了文件,但是一些图像查看器拒绝完全显示图像,如果有的话。

  • MS Paint 很高兴。
  • GIMP 很高兴。
  • LibreOffice Draw 很高兴。
  • Ristretto >> 读取 PNG 图像文件的致命错误:压缩数据不足。
  • ImageMagick >> 识别:没有足够的图像数据`20160317_PNG_064.png'@error/png.c/MagickPNGErrorHandler/1645。
  • 侏儒之眼 >> 图像数据不足。

我已经通过几个不同的工具将该文件放入了不同的工具中,但结果又好坏参半。

  • optipng >> 图像数据不足。
  • pngchunks 不报告任何错误。
  • pngcheck 不报告任何错误。

这是文件 20160317_PNG_064.png 的十六进制视图

它生成的图片就是这个8x8 像素的小图像

因此,对于下一步该尝试什么,我陷入了死胡同。感谢您提供任何和所有帮助。

EDIT_000 按照@Mark Adler 的要求,将问题缩小到此处的Adler32 计算是我用来在主函数中使用测试数据计算Adler32 值的代码。顺便说一句,这并不花哨,我的代码非常冗长。

0 投票
1 回答
671 浏览

javascript - javascript中文件的Adler32校验和

我正在使用 XMLHttpReques 部分上传文件,并且需要计算每个部分的 Adler32 校验和我如何在 javascript 中执行此操作。

0 投票
2 回答
1796 浏览

adler32 - Adler32 容易解密吗?为什么?

我听说我们不应该依赖 Adler32,我想问为什么。

为什么我们不应该信任 Adler32 来散列?它是可逆的吗?还是我们可以轻松地看到真实的文字?

0 投票
2 回答
445 浏览

python - 为什么我的滚动 adler32 校验和在 go 中不起作用?(模算术)

我正在实施adler32 checksum的滚动版本。

这个答案有助于仔细检查我的数学。但是我正在努力在 golang 中正确实现它。

我写了以下代码:

它在各种输入上对其进行了测试,并且运行良好,直到我决定在随机数据上运行它。这是一个不起作用的示例(我发现了其中几个)。

令我困惑的是,python 中的相同代码在这些输入上完美运行:

为了更好地衡量,我包括证明这在 python 中有效。请注意,python 校验和与 go 校验和的非滚动版本匹配(并且该部分直接来自 go 核心库)。

我研究了所有其他有问题的样本的结果,发现我从来没有在校验和的最低有效位(“a”位)上犯错。此外,误差始终相同,等于0xe10000。我怀疑 go 如何处理对 uint32 整数的模运算的特殊性是造成这种情况的原因。

发生了什么以及如何修复我的代码?

0 投票
1 回答
821 浏览

c# - Adler-32 校验和生成 - 为什么使用位和右移运算符

我找到了在 C# 中实现 Adler32 算法的方法,我想使用它,但我不明白部分代码:

有人可以解释一下吗:

1)为什么在sum1和sum2初始化时使用位运算符

2)为什么 sum2 被转移?

维基上的 Adler32 https://en.wikipedia.org/wiki/Adler-32

& 运算符解释:( 如果两个操作数中都存在二进制 AND 运算符,则将其复制一点到结果中)

0 投票
2 回答
697 浏览

hash - CRC32 引擎可以用于计算 CRC16 哈希吗?

我正在使用具有本机硬件功能的微控制器从内存块中计算 CRC32 哈希,其中多项式可以自由定义。事实证明,系统有不同的数据链路,具有不同的 CRC 位长度,如 16 位和 8 位,我打算为此使用硬件引擎。

在使用在线工具进行的简单测试中,我得出结论,可以找到与 8 位 CRC 具有相同结果的 32 位多项式,例如:

  • 使用 8 位引擎和 poly 0xb7 对“样本字符串”进行散列运算得到结果 0x97
  • 使用 16 位引擎和 poly 0xb700 散列“示例字符串”会产生结果 0x9700
  • ...32 位引擎和 poly 0xb7000000 产生结果 0x97000000(初始值为零,最终异或为零,无反射)

因此,用零填充多边形并右移结果似乎有效。但是“总是”有可能找到一组参数使 32 位引擎像 16 位或 8 位引擎一样工作吗?(包括 poly、final xor、init val 和 inversions)

为了提供更多上下文并防止诸如“不要使用本机引擎”之类的“绕过答案”:我在安全关键系统中有一个场景,有必要防止常见的设计错误传播到冗余处理节点。一种解决方案是在一个节点中进行基于软件的 CRC 计算,并在其对中进行基于硬件的计算。

0 投票
1 回答
806 浏览

compression - Deflate 数据解压 zlib

我正在使用 zlib 并且在解压缩时遇到了一些问题。我尝试解压缩到达“inflate”功能的数据包,但“inflate”返回-3。组合00 00 00 ff ff告诉我数据是通过deflate 算法压缩的。所以我尝试用解压器参数解压数据MAX_WBITS,- MAX_WBITS30但它没有帮助。我能解决这个问题吗?数据示例:

代码示例:

0 投票
1 回答
65 浏览

zlib - 流是否可以包含一些修复霍夫曼压缩块和一些动态霍夫曼压缩块

是否可以使用静态 Huf​​fman 编码压缩的某些块和动态 Huf​​fman 编码压缩的某些块来压缩流?如果是,它是可解压的吗?