问题标签 [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 投票
2 回答
2978 浏览

java - Adler32 快速重复

我正在使用 adler32 校验和算法从数据库 id 生成一个数字。因此,当我在数据库中插入一行时,我会获取该行的标识并使用它来创建校验和。我遇到的问题是我只在数据库中插入了 207 次后才生成了一个重复校验和。这比我预期的要快得多。这是我的代码:

我在做什么/怎么做有什么问题吗?我应该使用不同的方法来创建唯一的字符串吗?我这样做是因为我不想在 url 中使用 db id ... 对 db 结构的更改将破坏世界上所有的链接。

谢谢!

0 投票
1 回答
369 浏览

c - 消息的 Adler32 + adler 总和是否为零(如 CRC32)

CRC-32 有一个奇妙的特性,即在消息的末尾附加一个 CRC,可以通过计算整个事物的 CRC 来对消息进行验证,如果校验和通过,最终结果将为零。

这个属性是否应该适用于 CRC-32 的兄弟 Adler32?

简短的回答似乎是“不”,但我只是想确保我没有遗漏任何东西。

使用此处的示例消息http://en.wikipedia.org/wiki/Adler-32,我使用 zlib 实现编写了下面的测试程序

这些是结果:

0 投票
1 回答
5709 浏览

hash - adler32 哈希的可怕冲突

当使用 adler32() 作为散列函数时,应该会遇到罕见的冲突。

我们可以对碰撞概率进行精确的数学运算,但粗略地说,由于它是一个 32 位的散列函数,因此 在数千个项目的样本集上
不应该有很多碰撞。

几乎不是这种情况。

这是一个示例:让我们使用中间包含日期的字符串,例如

其中日期的格式为 yyyy-mm-dd,并在 2012 年循环。

这个例子中有 91 次碰撞!

更糟糕的是:有 7 个案例发生了 3 个日期冲突。

这么常用的hash函数怎么表现这么差?
还是我错过了什么?

以下是上述示例的详细结果:

0 投票
2 回答
144 浏览

security - 多级安全环境中的 Adler-32 安全实践

我正在几个运行 Debian 的 Web 服务器上实现多级安全环境。我已经阅读了大量关于快速哈希检查算法的文章,以补充其他安全组件。

看起来 Adler-32 非常快速和紧凑(我非常喜欢),尽管我知道它可以“轻松”伪造。它的这方面让我有点紧张,那么有什么办法可以防止它被某种方式伪造吗?

0 投票
1 回答
1979 浏览

c# - 在objective-c和C#上不同的adler32校验和

我正在开发一个应用程序,它将文件和该文件的 Adler32 校验和发送到 Web 服务。

在我将文件发送到 Web 服务器后,回答说校验和失败。

这是我用来检查objective-c总和的代码:

而这个是 C# web 服务的代码:

有谁知道为什么我会得到不同的校验和结果?

测试文件:http ://we.tl/gjqSj43238

Adler32 C#: 701ea682 (1881056898)

Adler32 对象-C: 70100C51 (1880099921)

谢谢!

0 投票
1 回答
239 浏览

python - 生成校验和函数的变化以最小化冲突

0 投票
2 回答
1304 浏览

ios - 目标c中的adler32校验和

我正在开发一个应用程序,它使用用户位置信息将数据发送到服务器。服务器根据校验和计算接受此数据,这是用 java 编写的。
这是用Java编写的代码:

我尝试寻求帮助以了解如何编写与此等效的目标 c。上面的函数使用adler32,我对此一无所知。请帮忙。

谢谢你的时间。

0 投票
1 回答
158 浏览

java - adler32 java按位和输入

我在这里找到了 adler32 的代码http://developer.classpath.org/doc/java/util/zip/Adler32-source.html

但是我的更新代码如下所示

作为链接上的相反代码

我不明白需要与0xffasbuf[i]已经是 8 个字节,我知道它将被提升为intas ais int,但类型提升不应该改变byte. 可能是我遗漏了更多细节,因为没有它就无法工作& 0xff,我用计算的值对其进行了测试java.util.zip.Adler32

感谢您的回答,但是它只对导致负数的值很重要,例如在我的测试中

印刷

0 投票
1 回答
612 浏览

hash - 什么时候适合使用简单的模数作为散列函数?

我需要从一个 32 位数字创建一个 16 位哈希,并且我试图确定一个简单的模数 2^16 是否合适。

哈希将用于 2^16 条目哈希表中,以便快速查找 32 位数字。

我的理解是,如果数据空间的分布相当均匀,那么简单的 mod 2^16 就可以了——它不应该导致太多的冲突。

在这种情况下,我的 32 位数字是修改后的 adler32 校验和的结果,使用 2^16 作为 M。

所以,从一般意义上说,我的理解是否正确,如果我的数据分布均匀,可以使用简单的 mod n(其中 n 是哈希表大小)作为哈希函数?

具体来说,adler32 会为此提供足够随机的分布吗?

0 投票
3 回答
24610 浏览

javascript - 如何从 JavaScript 对象生成校验和?

我需要从 JavaScript 对象进行校验和。
不幸的是,由于 JavaScript 的对象排序,似乎没有一种简单的方法可以实现这一点。例如,采取这些对象:

我认为这些对象的数据相等,并希望它们的校验和相同。只要对象中的数据相同,我真的不在乎对象的顺序。
唉,JSON.stringify这两者实际上并不相等;由于对 Object 进行校验和的唯一方法是通过其 String 表示,并且JSON.stringify-ed 表示不相等,因此我的校验和将不相等!
我想出的一种解决方案是根据预定义的模式重新创建对象,如下所示:

运行JSON.stringify(sortify(obj1,schema))==JSON.stringify(sortify(obj2,schema))将返回true......但代价是创建一个新对象并在数据周围洗牌。

我的另一个解决方案是将该JSON.stringify方法替换为从预定义模式中选择键并将它们的值字符串化,然后将它们连接在一起的方法。函数内容如下:

忽略这个方法没有返回正确的 JSON 的事实(它作为我正在尝试做的一个例子已经足够接近),它在速度上比第一个方法有了很大的改进(至少在我的 Chrome OS 浏览器中,你可以在这里自己检查:http: //jsperf.com/sort-then-json-stringify-vs-smarter-stringify),当然它使两个对象字符串表示相等!

然而,我只是想知道我是否遗漏了一些东西,并且有一个内置的方法来处理这样的事情,它没有 a) 将 JavaScript GC 驱动到一个病态的情况下,或者 b) 做了太多的字符串连接。我宁愿不做那些。