`
tailorcai
  • 浏览: 93287 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

CRC32 in PHP & Python

阅读更多
业务需要PHP和Python共享Memcache,因此自己实现了一个memcache的hash规则,用CRC32。但是突然发现Pyhton2.x的binascii.crc32的范围有负数。因此写了一个测试脚本来验证:

<?PHP
$chars = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-+=';
while(True) {
    $len = rand(1,20);
    $key = '';
    for( $i=0;$i<$len;$i++)
        $key .= substr( $chars, rand(0,strlen($chars)),1);
    print( $key. ",". crc32($key) . "\n" );
}

# python
import binascii
if __name__=="__main__":
    import sys
    while True:
        line =sys.stdin.readline()
        if not line: break
        line = line.strip()
        a,b = line.split(',',1)
        crc32 = binascii.crc32(a) & 0xFFFFFFFF
        if str(crc32) != b:
            print a,b,crc32

执行:
php crc32.php | python crc32.py

没有输出就对了!
分享到:
评论

相关推荐

    crc32碰撞python

    用Python写的crc32碰撞代码。可用来碰撞压缩包密码。。。。

    Python版带界面的CRC计算工具,支持字符串和文件的CRC16、CRC32计算(含源码)

    使用Python3.8写的CRC16_xmodem以及CRC32计算工具,支持字符串及文件,支持文件拖拽。Python计算速度太慢,增加了使用C语言编写的CRC计算库,加快计算速度,可以选择是否使用C语言计算库。 支持32位和64位Python。 ...

    CRC_crc32_CRC16_crc64_源码

    在这个压缩包中,我们可以看到与CRC相关的三个主要版本:CRC32、CRC16和CRC64。它们之间的主要区别在于校验码的长度和相应的多项式。 1. **CRC32**: CRC32使用32位的校验码,其算法基于一个32位的生成多项式。在...

    crc_32_c.rar_C#CRC32校验_CRC32 查表_crc32_crc32.c

    CRC32(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和存储领域的错误检测方法。在C#编程环境中,CRC32校验通常用于确保数据在传输或存储过程中没有发生错误。这个压缩包"crc_32_c.rar"包含了...

    CTF爆破CRC32.zip

    Python中可以使用`binascii`库中的`crc32`函数来计算CRC32值。例如,要计算字符串的CRC32: ```python import binascii target_crc32 = 0x12345678 # 假设这是目标CRC32值 input_str = "未知四位字符" # 这是我们...

    crc32-master.zip_crc32.py_crc32碰撞密码_zip crc32_zip crc碰撞_zip利用crc

    文件名列表中的"crc32.py"可能是用于生成和测试CRC32碰撞的Python脚本。这个脚本可能会实现以下功能: 1. 生成具有特定CRC32值的随机数据。 2. 尝试替换ZIP文件内的加密文件,计算新的CRC32值并与原始值比较。 3. ...

    ORACLE CRC32函数

    ### ORACLE CRC32函数详解 #### 一、概述 在Oracle数据库中,`CRC32`函数是一种非常实用的功能,主要用于将字符类型的数据转换为一个唯一的数字类型,这一过程通常被称为散列(Hash)。通过该函数,可以方便地生成...

    C# crc32校验

    1. **定义CRC32类**:创建一个名为 `CRC32Cls` 的类,其中包含用于生成CRC32查找表的方法 `GetCRC32Table()` 和用于获取指定字符串CRC32校验值的方法 `GetCRC32Str(string sInputString)`。 2. **调用示例**:定义...

    CRC32 数值表 查表

    ### CRC32数值表查表知识点解析 #### 一、CRC基本概念介绍 循环冗余校验(Cyclic Redundancy Check,简称CRC)是一种数据校验技术,主要用于检测或纠正传输过程中的错误。CRC算法基于多项式除法,通过在发送端计算...

    2022年最强万能crc32爆破脚本

    2022年最强万能crc32爆破脚本,支持各种类型的图片格式例如:JPG、PNG、bmp、GIF等。

    CRC计算工具包括,CRC32 和 CRC-32/MPEG-2 以及CRC32/MPEG-2的计算函数

    CRC计算工具是实现这一功能的软件工具,能够生成不同类型的CRC校验码,例如CRC8、CRC16和CRC32等。 CRC32是最常见的CRC版本,它使用32位的校验码。这个校验码是通过对原始数据执行特定的二进制除法运算并取模得到的...

    基于FPGA用verilogHDL设计的CRC32模块

    CRC32,全称为Cyclic Redundancy Check 32位,是一种广泛应用于数据通信和存储领域的错误检测码,主要用于确保数据传输或存储的完整性。在FPGA(Field-Programmable Gate Array)设计中,CRC32模块是实现这种错误...

    CRC-32和CRC-32/MPEG-2校验源码-Labview版本

    CRC-32和CRC-32/MPEG-2的校验方法实现源码-Labview版本(2015),提供2种CRC-32的labview方法,提供CRC-32/MPEG-2校验的Labview版本(2015)方法和MATLAB function函数,可以在simunlink嵌入式function调用。

    crc32 & md5 & sha1 & sha256

    CRC32、MD5、SHA1以及SHA256是计算机科学中常见的散列函数,它们在数据完整性检查、安全认证、文件校验等方面发挥着重要作用。这些算法都是基于不同的数学原理设计,各有其特点和应用场景。 CRC32(Cyclic ...

    C语言版CRC32库及demo

    CRC32(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和存储领域的错误检测技术。它的核心思想是通过计算数据的校验码,来判断数据在传输或存储过程中是否发生错误。在C语言环境中实现CRC32库,...

    Python库 | google_crc32c-1.1.5-cp38-cp38-win32.whl

    资源分类:Python库 所属语言:Python 资源全名:google_crc32c-1.1.5-cp38-cp38-win32.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    CRC32碰撞工具

    CRC32(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信和存储中的错误检测方法。它的核心原理是通过一个特定的算法,即CRC算法,对数据进行计算,生成一个固定长度的校验码,通常为32位。这个...

    [硬件指令优化系列]汇编CRC32指令

    纯软件实现CRC32经常是借助于查表实现的,当计算CRC32过于频繁时可通硬件指令优化以减少对CPU的占用。目前Intel支持的用于计算CRC的有CRC32和PCLMULQDQ两个指令。本文仅讨论使用CRC32指令的使用。CRC32指令计算的是...

    CRC32校验工具

    CRC32校验工具是一种广泛应用于数据完整性和错误检测的技术,尤其在文件传输、存储系统以及通信协议中占据重要地位。CRC,全称是Cyclic Redundancy Check(循环冗余校验),它通过计算数据的校验码来判断数据在传输...

    crc32_crc碰撞_

    "crc32-master"这个文件名可能是一个关于CRC32的项目或库的主目录,可能包含了源代码、文档、示例等内容,帮助开发者理解和实现CRC32算法,也可能包含有关CRC碰撞测试的工具或实验。 总的来说,CRC32碰撞是一个相对...

Global site tag (gtag.js) - Google Analytics