首页
社区
课程
招聘
[原创]用CRC编解码矩阵的概念任意制造CRC碰撞
发表于: 2009-7-21 02:11 51995

[原创]用CRC编解码矩阵的概念任意制造CRC碰撞

2009-7-21 02:11
51995
收藏
免费 7
支持
分享
最新回复 (81)
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
x86是可以单字节寻址,但是完成一次CRC32需要4个字节,在新的PC端得软件int为4个字节即“1个字”
在汇编为双字即DWORD,PC的编程环境很乱。在MCU方面也如此,有int为2个字节即半字(还有叫1字的)。

但不管什么语言,什么环境,但每次计算必须统一数据类型即所占用字节的空间。即数据类型的强制转换。

因此5字节的数据不需要做什么补位就能够计算其CRC32值


这绝对是外行说的话,建议不要误导人民群众~~~
2009-7-24 13:15
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
要说ccfer没编过程序,全论坛的程序员都笑了


我知道敢在菜农面前叫板的绝非等闲之辈,俺见得太多了~~~

俺不在这里卖老,群殴俺一定奉陪~~~
2009-7-24 13:18
0
雪    币: 8209
活跃值: (4559)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
28
00401040        8B5424 08         MOV     EDX,DWORD PTR SS:[ESP+8]
00401044        8B4C24 04         MOV     ECX,DWORD PTR SS:[ESP+4]
00401048        83C8 FF           OR      EAX,FFFFFFFF
0040104B        85D2              TEST    EDX,EDX
0040104D        74 24             JE      SHORT 00401073
0040104F        53                PUSH    EBX
00401050        56                PUSH    ESI
00401051        8D32              LEA     ESI,DWORD PTR DS:[EDX]
00401053        8BD0              MOV     EDX,EAX
00401055        33DB              XOR     EBX,EBX
00401057        8A19              MOV     BL,BYTE PTR DS:[ECX]    ;读取1个字节的数据,没有补位
00401059        81E2 FF000000     AND     EDX,0FF
0040105F        33D3              XOR     EDX,EBX
00401061        C1E8 08           SHR     EAX,8
00401064        8B1495 CC404200   MOV     EDX,DWORD PTR DS:[EDX*4+4240CC]
0040106B        33C2              XOR     EAX,EDX
0040106D        41                INC     ECX
0040106E        4E                DEC     ESI                     ;以实际数据长度循环,没有补长度
0040106F       ^75 E2             JNZ     SHORT 00401053
00401071        5E                POP     ESI
00401072        5B                POP     EBX
00401073        F7D0              NOT     EAX
00401075        C3                RETN
2009-7-24 13:26
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
楼上的例子就是所谓“小端”带来的产物。

例如 0x12345678 在内存为0x78,0x56,...0x12

假若 0x12345678AB 在内存为0xAB,0x78,0x56,...0x12,(0x00,...0x00这些实际可以不要)

因为编译器优化后只需实际长度即可。

估计是这个坛子逆向汇编习惯了,请楼上给出C语言的程序代码来。
2009-7-24 13:33
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
MOV     EDX,DWORD PTR DS:[EDX*4+4240CC]

EDX*4不知何解~~~
2009-7-24 13:35
0
雪    币: 8209
活跃值: (4559)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
31
EDX*4是为了读取Crc32Table,与输入数据的长度无关,与输入数据是否补位无关
2009-7-24 13:44
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
32
2009-7-24 13:44
0
雪    币: 8209
活跃值: (4559)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
33
首先我不是来和楼主叫板的
我只是对前面s大侠提到的用5字节数据计算CRC32的时候是否要补位有疑惑
于是我在x86 PC机上做个试验,没有发现有补位的操作

楼主说我是外行,没错,我确实是外行
至于楼主又说我误导人民群众,这个帽子似乎大了点
2009-7-24 13:52
0
雪    币: 8209
活跃值: (4559)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
34
不是我不贴C源码,因为C的代码说明不了什么问题
在不同平台上编译出来的bin是完全不同的
你编译个ARM版本DWORD对齐,就不是我和你讨论的同一个问题了

我贴汇编代码是为了体现在x86下的实际执行效果
2009-7-24 14:01
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
我没什么意思,只是就事论事。

这实际是个大端和小端得问题。

计算机几乎都是采用小段模式。

我编的演算器只是为了看着方便才采用大端模式。
2009-7-24 14:06
0
雪    币: 8209
活跃值: (4559)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
36
DWORD Crc32Table[256];

void MakeTable()
{
	int i,j;
	DWORD crc;
	for (i = 0; i < 256; i++)
	{
		crc = i;
		for (j = 0; j < 8; j++)
		{
			if (crc & 1)
			{
				crc = (crc >> 1) ^ 0xEDB88320;
			}
			else
			{
				crc >>= 1;
			}
		}
		Crc32Table[i] = crc;
	}
}

DWORD GetCrc32(BYTE *lpData, DWORD dwSize)
{
	DWORD  crc(0xFFFFFFFF);
	DWORD len;
	BYTE* buffer;

	len = dwSize;
	buffer = lpData;
	while(len--)
	{
		crc = (crc >> 8) ^ Crc32Table[(crc & 0xFF) ^ *buffer++];
	}

	return crc^0xFFFFFFFF;
}


C代码没什么看头啊,我是网上随便抄一个过来用的,知道原理你自己写个就行了
2009-7-24 14:22
0
雪    币: 7350
活跃值: (3863)
能力值: (RANK:1130 )
在线值:
发帖
回帖
粉丝
37
2009-7-24 14:26
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
37楼给的比较标准。CRC32的“市场”最乱。
36楼的C语言程序和前面的汇编不配套。

/*----------------------------------------------------------------------------*\
*  NAME:
*     Crc32_ComputeBuf() - computes the CRC-32 value of a memory buffer
*  DESCRIPTION:
*     Computes or accumulates the CRC-32 value for a memory buffer.
*     The 'inCrc32' gives a previously accumulated CRC-32 value to allow
*     a CRC to be generated for multiple sequential buffer-fuls of data.
*     The 'inCrc32' for the first buffer must be zero.
*  ARGUMENTS:
*     inCrc32 - accumulated CRC-32 value, must be 0 on first call
*     buf     - buffer to compute CRC-32 value for
*     bufLen  - number of bytes in buffer
*  RETURNS:
*     crc32 - computed CRC-32 value
*  ERRORS:
*     (no errors are possible)
\*----------------------------------------------------------------------------*/

static unsigned long Crc32_ComputeBuf( unsigned long inCrc32, const void *buf,
                                       size_t bufLen )
{
    static const unsigned long crcTable[256] = {
   0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,
   0x9E6495A3,0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,
   0xE7B82D07,0x90BF1D91,0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,
   0x6DDDE4EB,0xF4D4B551,0x83D385C7,0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,
   0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5,0x3B6E20C8,0x4C69105E,0xD56041E4,
   0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,0x35B5A8FA,0x42B2986C,
   0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,0x26D930AC,
   0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F,
   0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,
   0xB6662D3D,0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,
   0x9FBFE4A5,0xE8B8D433,0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,
   0x086D3D2D,0x91646C97,0xE6635C01,0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,
   0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,0x65B0D9C6,0x12B7E950,0x8BBEB8EA,
   0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,0x4DB26158,0x3AB551CE,
   0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB,0x4369E96A,
   0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,
   0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,
   0xCE61E49F,0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,
   0xB7BD5C3B,0xC0BA6CAD,0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,
   0x9DD277AF,0x04DB2615,0x73DC1683,0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,
   0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,0xF00F9344,0x8708A3D2,0x1E01F268,
   0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7,0xFED41B76,0x89D32BE0,
   0x10DA7A5A,0x67DD4ACC,0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5,0xD6D6A3E8,
   0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,
   0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,
   0x4669BE79,0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,
   0x220216B9,0x5505262F,0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,
   0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,
   0x9C0906A9,0xEB0E363F,0x72076785,0x05005713,0x95BF4A82,0xE2B87A14,0x7BB12BAE,
   0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,0x86D3D2D4,0xF1D4E242,
   0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,0x88085AE6,
   0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45,
   0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,0xA7672661,0xD06016F7,0x4969474D,
   0x3E6E77DB,0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,
   0x47B2CF7F,0x30B5FFE9,0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,
   0xCDD70693,0x54DE5729,0x23D967BF,0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,
   0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D };
    unsigned long crc32;
    unsigned char *byteBuf;
    size_t i;

    /** accumulate crc32 for buffer **/
    crc32 = inCrc32 ^ 0xFFFFFFFF;
    byteBuf = (unsigned char*) buf;
    for (i=0; i < bufLen; i++) {
        crc32 = (crc32 >> 8) ^ crcTable[ (crc32 ^ byteBuf[i]) & 0xFF ];
    }
    return( crc32 ^ 0xFFFFFFFF );
}
2009-7-24 14:53
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
2009-7-24 14:58
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
40
LS还好吧?

你的资历太恐怖了
不出一个月你应能马上适应这里的习惯.
注: 一般没讲的话, 我们都是在说 intel 80x86 .而不是单晶片.

2009-7-24 15:00
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
和这个工具一个结果。

http://www.lammertbies.nl/comm/info/crc-calculation.html?crc=1234&method=ascii

菜农现在升级和这个工具一样即可。

但是本坛的“碰撞”确实是试出来的,256次碰撞用了31mS,俺1mS都不需要。
俺的全用理论依据。是在制造碰撞。

虽然数学界还没给菜农一个结果。
2009-7-24 15:07
0
雪    币: 8209
活跃值: (4559)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
42
36楼的代码和前面贴的汇编是配套的
汇编里面贴的只是GetCrc32,没有贴MakeTable
因为一般看到的代码都是直接给出静态的Crc32Table,省去动态的MakeTable

用36楼的的MakeTable得到的Crc32Table和37楼的静态Crc32Table是相同的,MakeTable体现了多项式原理
2009-7-24 15:28
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
36楼的程序:
DWORD GetCrc32(BYTE *lpData, DWORD dwSize)
{
  DWORD  crc(0xFFFFFFFF);
  DWORD len;
  BYTE* buffer;

  len = dwSize;
  buffer = lpData;
  while(len--)
  {
    crc = (crc >> 8) ^ Crc32Table[(crc & 0xFF) ^ *buffer++];
  }

  return crc^0xFFFFFFFF;
}

其中:
crc & 0xFF是字节操作。

初值crc的定义:
DWORD  crc(0xFFFFFFFF);

完整的C程序:
    crc = (crc >> 8) ^ Crc32Table[(crc & 0xFF) ^ *buffer++];

难道左值crc不是DWORD类型吗???

CRC查表就是为了不移位或少移位。
输入字节是5个没错,因为crc已初始化,查表的结果是1字节。

语句:
crc = (crc >> 8) ^ Crc32Table[(crc & 0xFF) ^ *buffer++];

难道不需要强制转换吗???

语句是没强制转换语句,难道编译器不转换吗???
2009-7-24 18:53
0
雪    币: 8209
活跃值: (4559)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
44
14楼说的是:长度=5的明文
你在16楼说的是:长度应该设置为4的倍数才行,设置5,实际内部设置为8, 数据位补零。
C代码中的明文在buffer中,buffer中内容有补位吗?

你现在转移话题到左值crc运算的结果上,CRC32的结果最后都是4字节DWORD,更没有补位不补位的说法了
还有你说的强制转换和你16楼说的数据位补零是一回事吗?
2009-7-24 20:15
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
45
这只有优化的结果。

我的意思就是下面的语句:
crc = (crc >> 8) ^ Crc32Table[(crc & 0xFF) ^ *buffer++];

我只是对事不对人。

再:
我已完成初步升级,支持这种CRC32右移模式。

两种软件输入模式不同,我的是按整倍数做的,因为要牵扯到分组解密的问题。







从最后一张图可以看到:
CRC运算是有过程的,一般演算器基本不显示中间运算过程。

最后一个密文组取反后才是CRC32的结果。

虽然可以不按正组字节输入,即4字节一组,它不过是中间直接输出取反。

输入5字节,实际前面的4字节在入口已经格式化了,虽然没补0,只是编译器优化而已。

它采用的是右移CRC32,多项式=0xEDB88320

那个软件采用的是试探碰撞。

图解CRC编解码矩阵及解码矩阵列坐标“CRC碰撞”

实际碰撞很简单,但必须心中虚构“2个CRC编解码矩阵”,碰撞会在CRC解码矩阵的列中产生。
下图列中会看见“红蓝圈发生的碰撞”。





上传的附件:
2009-7-24 20:43
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
等我有时间把3afK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3S2G2N6r3x3#2x3g2)9J5k6h3y4G2L8g2)9J5c8V1S2G2N6q4m8G2N6$3g2J5i4K6g2X3d9r3!0@1g2@1x3K6i4K6u0W2K9s2c8E0L8q4!0q4y4g2)9^5c8q4)9^5y4#2!0q4y4#2!0n7b7g2!0m8y4#2!0q4y4q4!0n7z5q4!0n7b7g2!0q4y4W2)9&6y4q4!0m8c8W2!0q4y4W2)9^5b7#2)9^5x3g2!0q4y4W2)9&6z5g2!0m8c8g2!0q4z5g2)9^5x3g2)9^5c8q4!0q4y4#2)9&6b7g2)9^5y4p5y4d9b7K6x3J5i4K6u0W2i4@1f1#2i4K6S2r3i4@1q4r3i4@1f1$3i4K6R3K6i4K6W2o6i4@1f1%4i4K6S2q4i4@1t1H3i4@1f1#2i4K6W2o6i4@1p5^5i4@1f1#2i4K6S2r3i4@1q4m8i4@1f1$3i4K6V1@1i4@1q4r3i4@1f1$3i4K6S2o6i4K6R3I4f1#2c8y4x3K6u0Q4c8e0N6Q4z5f1q4Q4z5o6c8o6f1V1x3K6x3W2)9J5k6b7`.`.


不想多说了,我兑现在16楼的诺言,完全兼容本坛网友给的工具。

点击直接运行: 112位HotWC3/CRC通用网上演算器V3.01

由于菜农在看雪论坛被群殴,无奈用程序验证菜农“补零”之说。
本来就是一个编程最基础的小问题,菜农编了一辈子程序,
逆向了一辈子,这样的问题根本不需要耗费俺的脑浆。

菜农被群殴之处:http://bbs.pediy.com/showthread.php?t=93968

菜农不想再多解释什么,和给定程序完全一样的结果,只是编程手法
不同,俺考虑的是通用和加密及解密等。

贴图为证:(也可用http://www.lammertbies.nl/comm/info/...5&method=ascii证明)







2009-7-25 00:38
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
这个直接一点. 里头的工具就很会碰(相同的CRC校验和)

http://bbs.pediy.com/showthread.php?t=66767&tcatid=37&viewgoodnees=1
另外, 能实作出来的东西才有用吧.


感觉这个程序碰撞的原理不对。

因为碰撞是可以算出来的。

http://bbs.pediy.com/showthread.php?t=94251
2009-7-25 01:08
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
48
不论怎样 ' 是否是最快的, 对于非研此学的人而言都不重要... 重要的是他可以用.
LZ若能写一个一样的 EXE (碰CRC64) (非网页), 真牛人耶.
否则, 相信你总有一天能研究出来的.

-------------
CRC64= 045D01C1D87F7E0C
  明文1(不限长度不限字符集):
  明文2(不限长度不限字符集):
2009-7-25 01:28
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
49
crc128,CRCNNN 我 随便即可碰出来,因为我20年总结出来的数学教授也无奈何!!!

LZ若能写一个一样的 EXE (碰CRC64) (非网页), 真牛人耶.


俺是否是“牛人”俺不知,网上自有说法。用我的邮箱搜索便知我是干什么的。

40fK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2K9h3N6G2L8$3N6D9k6h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7$3g2S2M7X3y4Z5i4K6u0W2j5i4y4H3i4K6y4r3M7g2)9K6c8p5S2G2N6q4m8G2N6$3g2J5i4K6b7H3x3e0t1$3i4K6u0W2j5$3!0E0i4K6t1$3L8Y4g2E0i4K6y4p5x3e0l9`.

我什么主流编程语言没用过???真是笑话~~~

随便可以搜索即可:

abcK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2K9h3N6G2L8$3N6D9k6h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7$3g2S2M7X3y4Z5i4K6u0W2j5i4y4H3i4K6y4r3M7g2)9K6c8s2k6U0i4K6u0n7K9r3!0@1M7r3!0%4k6i4u0Q4x3U0k6F1N6h3#2Q4x3@1b7J5x3l9`.`.

223K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2K9h3N6G2L8$3N6D9k6h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7$3g2S2M7X3y4Z5i4K6u0W2j5i4y4H3i4K6y4r3M7g2)9K6c8r3y4$3K9g2)9J5b7X3S2G2N6s2m8G2N6$3g2J5i4K6t1$3L8Y4g2E0i4K6y4p5x3U0l9`.

830K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2K9h3N6G2L8$3N6D9k6h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7$3g2S2M7X3y4Z5i4K6u0W2j5i4y4H3i4K6y4r3M7g2)9K6c8r3c8W2L8s2m8Z5K9g2)9J5b7X3S2G2N6s2m8G2N6$3g2J5i4K6t1$3L8Y4g2E0i4K6y4p5x3U0l9`.

5a1K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3u0S2K9h3N6G2L8$3N6D9k6h3c8#2i4K6u0W2j5$3!0E0i4K6u0r3M7$3g2S2M7X3y4Z5i4K6u0W2j5i4y4H3i4K6y4r3M7g2)9K6c8s2k6T1i4K6u0n7K9r3!0@1M7r3!0%4k6i4u0Q4x3U0k6F1N6h3#2Q4x3@1b7J5x3l9`.`.

cc2K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3N6G2L8$3N6D9k6g2)9J5k6h3y4F1i4K6u0r3M7$3g2S2M7X3y4Z5i4K6y4r3K9r3I4Q4x3@1c8*7K9q4)9J5k6p5y4z5i4K6t1$3M7g2)9K6c8r3y4Q4x3U0f1J5x3#2)9J5b7X3S2G2N6s2m8G2N6$3g2J5i4K6t1$3j5Y4c8F1c8#2)9K6c8p5N6G2L8$3N6D9k6g2)9J5b7W2)9J5y4f1f1$3i4K6t1#2z5e0m8Q4x3U0f1&6b7#2)9J5y4f1f1%4i4K6t1#2b7U0c8Q4x3U0g2m8x3R3`.`.

...
2009-7-25 01:51
0
雪    币: 129
活跃值: (1095)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
50
CRC64= 045D01C1D87F7E0C
  明文1(不限长度不限字符集):
  明文2(不限长度不限字符集):


随便给你碰几个CRC64:(俺的演算器就是为逆向(即碰撞)做的)
用网页写就是应网友要求即开源算法的。

点击直接运行: 112位HotWC3/CRC通用网上演算器V3.01

权值=42F0E1EBA9EA3693  CRC64= 045D01C1D87F7E0C

明文1=3C4DE0E9B2B1E075671281DEF4E6BC3D
密文1=0123456789ABCDEF045D01C1D87F7E0C
CRC64=                045D01C1D87F7E0C  

明文2=B713219374C2823B4333949C7F1D54D2
密文2=2502502502502500045D01C1D87F7E0C
CRC64=                045D01C1D87F7E0C
2009-7-25 02:01
0
游客
登录 | 注册 方可回帖
返回