标签: checksum

我怎么能猜出校验和算法?

我们假设我有一些最后有16位校验和的数据包.我想猜猜使用了哪种校验和算法.

首先,根据转储数据,我可以看到数据包有效载荷中的一个字节更改完全改变了校验和,因此我可以假设它不是某种简单的XOR或总和.

然后我尝试了CRC16的几种变体,但没有太多运气.

这个问题可能更倾向于加密,但我真的对任何易于理解的统计工具感兴趣,以找出这可能是哪个CRC.如果其他一切都失败了,我甚至可能会转向绘制不同的CRC算法.

Backgroud故事:我有串行RFID协议,带有某种校验和.我可以毫无问题地重播消息,并解释结果(没有校验和检查),但我无法发送修改后的数据包,因为设备将它们丢弃在地板上.

使用现有的软件,我可以改变RFID芯片的有效载荷.但是,唯一的序列号是不可变的,因此我无法检查每个可能的组合.虽然我可以生成递增1的值的转储,但不足以使详尽的搜索适用于此问题.

如果问题本身不够,可以使用包含数据的转储文件 :-)

需要参考文献? CRC错误检测算法的无意义指南是我在这里提问之后找到的很好的参考.

最后,在接受了答案的非常有用的提示之后,我 使用了这个CRC计算器,并使用已知校验和的xored生成校验和得到0xffff,这使我得出结论,最终xor是CCITT的0x0000的0xffff instread.

checksum crc

16
推荐指数
1
解决办法
1万
查看次数

创建小(<10位),而不是(非常)安全"哈希"的想法

我正在开发一个在线活动票务系统,用户可以自行打印他的票据并出现在将被扫描的事件(条形码),理想情况下,这个人会进入.我的问题是如何创建一个满足以下要求的"票证代码":

  • 每个"票证代码"需要彼此充分不同(即不按顺序编号)
  • 理想情况下,车票将与中心数据库,以避免重复使用进行检查,但它需要能够工作过太行,在这种情况下,系统必须检查是否有"有效"票代码和它没有在使用门.
  • "票证代码"必须足够小,以便在需要时方便键入
  • 持票人只需要门票进入(即没有身份证检查)

数据范围非常小,4天内只有大约20个活动,每个活动约5,000张门票(约100,000个不同的门票代码)

现在我有几个字段没有打印在故障单上,用户不知道我可以使用它来编码部分"票证代码",所以我可以使用EventId,OrderId,EventDate和一些盐来创建一个小的"哈希"部分代码(想法?),但我仍然坚持顺序或GUID(太长)的票证ID

那么关于如何做到这一点的任何想法或指示?

encryption hash encode checksum

16
推荐指数
3
解决办法
7628
查看次数

Python相当于unix cksum函数

我一直在寻找unix cksum命令的等效python方法:

http://pubs.opengroup.org/onlinepubs/7990989775/xcu/cksum.html

$ cksum ./temp.bin
1605138151 712368 ./temp.bin
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经找到了zlib.crc32()函数

>>> import zlib
>>> f = open('./temp.bin','rb')
>>> data = f.read()
>>> zlib.crc32(data)
1128751837
Run Code Online (Sandbox Code Playgroud)

但是,此代码似乎产生不同的结果.据我所知,这应该是使用相同的crc多项式,但我想在字节顺序或初始值必须有一些差异.任何人都可以为我阐明这一点吗?

python unix crc32 checksum zlib

16
推荐指数
2
解决办法
3871
查看次数

验证Android apk没有重新包装?

希望改进我的Android应用程序的安全性,以标记.apk是否已被提取,修改,重新包装和重新签名.这是来自Zdnet的文章,注意到问题link1.

令人担忧的是,如果应用程序被黑客攻击,他们可能会添加恶意代码并上传到备用应用程序商店并欺骗用户下载它.

所以我正在考虑验证apk或签名证书的校验和的代码?

我很欣赏应用程序代码可以重新打包并删除任何安全代码,但它确实增加了重新打包的难度,也许足以让他们尝试另一个应用程序.

[更新]我知道Google Play商店许可模块提供类似的东西,但我正在寻找非付费应用和其他/非市场的东西.

security android checksum

16
推荐指数
1
解决办法
2万
查看次数

为什么在Adler-32校验和算法中模数为65521?

Adler-32校验和算法总和模数为65521.我知道65521是最大的素数,适合16位,但为什么在这个算法中使用素数很重要?

(我确信一旦有人告诉我,答案就会显而易见,但我脑中的数论理论部分却无法正常工作.即使没有校验和算法方面的专业知识,一个聪明的人也会阅读http://en.wikipedia. org/wiki/Fletcher%27s_checksum可能会向我解释.)

algorithm math checksum adler32

15
推荐指数
1
解决办法
4560
查看次数

如何计算校验和

我正在开发仪器驱动程序,我想知道如何计算帧的校验和.

说明:

  1. 用字符[0-9]和[AF]表示.

  2. 从[STX]之后的字符开始直到[ETB]或[ETX](包括[ETB]或[ETX])的字符以二进制形式添加.

  3. 代表十六进制代码中最低有效8位的2位数字将转换为ASCII字符[0-9]和[AF].

  4. 最高有效位存储在CHK1中,最低有效位存储在CHK2中.

我没有超过第3和第4点.

任何人都可以提供c#的示例代码.

请帮我.

c# checksum

15
推荐指数
1
解决办法
4万
查看次数

为在线商店生成订单号的最佳方法?

我的在线商店中的每个订单都有一个面向用户的订单号.我想知道生成它们的最佳方法.标准包括:

  • 很容易通过电话说(例如,"m"和"n"是模棱两可的)
  • 独特
  • 校验和(矫枉过正?有用吗?)
  • 编辑:不显示已经有多少总订单(客户可能会发现您的第三个订单令人不安)

现在我正在使用以下方法(没有校验和):

def generate_number                
    possible_values = 'abfhijlqrstuxy'.upcase.split('') | '123456789'.split('')

    record = true
    while record
        random = Array.new(5){possible_values[rand(possible_values.size)]}.join
        record = Order.find(:first, :conditions => ["number = ?", random])
    end          
    self.number = random
end
Run Code Online (Sandbox Code Playgroud)

ruby checksum e-commerce

14
推荐指数
3
解决办法
1万
查看次数

组合MD5哈希值

在大文件上计算单个MD5校验和时,通常使用什么技术将各种MD5值组合成单个值?你刚刚把它们加在一起吗?我对任何特定的语言,库或API都不感兴趣; 相反,我只对它背后的技术感兴趣.有人可以解释它是如何完成的吗?

给出伪代码中的以下算法:

MD5Digest X
for each file segment F
   MD5Digest Y = CalculateMD5(F)
   Combine(X,Y)
Run Code Online (Sandbox Code Playgroud)

但究竟会Combine做什么?它是否将两个MD5摘要一起添加,或者是什么?

algorithm checksum md5

14
推荐指数
2
解决办法
1万
查看次数

如何为java对象生成校验和

我正在寻找一种解决方案来为任何类型的Java对象生成校验和,对于生成相同对象的应用程序的每次执行,它都保持不变.

我试过了Object.hashCode(),但是api说

....从应用程序的一次执行到同一应用程序的另一次执行,这个整数不需要保持一致.

java checksum object

14
推荐指数
4
解决办法
4万
查看次数

在对象图上创建校验和

这个问题关系到这一个,但我认为应该分开询问.

我有一个复杂的对象实例图.现在,我想在内存中直接创建一个校验和,以检测自上次校验和与对象图一起保存以来是否对其进行了更改.校验和计算应该很快,不应该消耗太多内存.

据我所知,现在最好的解决方案可能是在对象图的二进制序列化形式上生成加密密钥(如果我错了,请纠正我).但这有几个问题:

  1. 我该如何序列化对象?它必须快速且不会消耗太多内存.此外,它必须始终以相同的方式可靠地序列化.如果我使用.NET默认序列化,我真的可以确定如果实际数据相同,创建的二进制流总是相同的吗?我对此表示怀疑.
  2. 那么序列化的另一种方法是什么呢?

更新:

您如何看待这种方法:

  1. 浏览图形并使用算法在图中创建标准的int哈希码 (但不包括表示图中节点的引用类型成员).将每个哈希码添加到整数列表
  2. 将整数列表转换为字节数组
  3. 使用MD5,CRC或类似方法在字节数组上创建哈希

提到的GetHashCode算法应该快速计算一个哈希码,该哈希码对于仅考虑其原始成员的单个对象来说是非常安全的.基于此,字节数组也应该是对象图的相当碰撞安全表示以及此处的MD5/CRC散列.

.net serialization checksum

14
推荐指数
2
解决办法
3783
查看次数

标签 统计

checksum ×10

algorithm ×2

.net ×1

adler32 ×1

android ×1

c# ×1

crc ×1

crc32 ×1

e-commerce ×1

encode ×1

encryption ×1

hash ×1

java ×1

math ×1

md5 ×1

object ×1

python ×1

ruby ×1

security ×1

serialization ×1

unix ×1

zlib ×1