quxinna 最近的时间轴更新
quxinna

quxinna

V2EX 第 200285 号会员,加入于 2016-11-07 19:44:18 +08:00
今日活跃度排名 5595
CRC-32 查表法真的存在吗?
程序员  •  quxinna  •  3 天前  •  最后回复来自 quxinna
34
md5 的偏移量是怎么确定的?
程序员  •  quxinna  •  22 天前  •  最后回复来自 quxinna
4
md5 如何实现雪崩效应的
程序员  •  quxinna  •  34 天前  •  最后回复来自 unco020511
42
从自然常数 e 的计算公式能推导 MD5 的算法吗
问与答  •  quxinna  •  52 天前  •  最后回复来自 snw
12
quxinna 最近回复了
3 天前
回复了 quxinna 创建的主题 程序员 CRC-32 查表法真的存在吗?
@quxinna var 的 0xffffffff 值,提取最高位 1byte 0xff,和 01 进行 xor 结果,查表 crc32 值,var 的 0xffffffff 值去掉最高位 1byte,低位补 0 0xffffff00,和查表 crc32 值 xor 得到结果,原来是输入数据反转
3 天前
回复了 quxinna 创建的主题 程序员 CRC-32 查表法真的存在吗?
@3dwelcome var=(crc32_table_normal[operator])^(var<<8) 中当 var=0xffffffff,第一次计算的时候会异或 0xffffff00 吗? operator^=(var>>24),operator^ff,那么并不是输入数据反转啊?
@quxinna 这个从比特流的角度看确实是数据末尾。字符 1 的 ASCII 码是 49,对应的二进制是 00110001,在它的末尾追加 1 比特和 23 个 0 比特,构成了 00110001 10000000 00000000 00000000 。又因为 x86 平台存储一个整数是用小端序存的,倒过来就是 00000000 00000000 10000000 00110001,所以是 32768+49=32817
好像是通过移位异或后面的常数项来达到非线性目的的
@Flymachine
补为 448 确实如此,开头补 1 有待考证
x[len >> 5] |= 0x80 << len % 32
//len 单位为 8*byte x 单位为 byte/4
//不足 32 位的数据前面加上 128,正好 32 位的数据在后面一组加上 128
//2^5 = 32 0x80=2^7=128
输入 0 个 1 输入得到 len>>5=0,x[len >> 5]=128 << 0=128
输入 1 个 1 输入得到 len>>5=0,x[len >> 5]=128 << 8+0x31=0x8000+0x31=32768+49=32817
输入 2 个 1 输入得到 len>>5=0,x[len >> 5]=128 << 16+0x3131=0x800000+0x3131=8388608+12593=8401201
输入 3 个 1 输入得到 len>>5=0,x[len >> 5]=128 << 24+0x313131=0x80000000+0x313131=-2147483648+3223857=-2144259791
输入 4 个 1 输入得到 len>>5=1,x[len >> 5]=128 << 0=128

x[(((len + 64) >>> 9) << 4) + 14] = len
//输入 1 个 1 得到(8+64) >>> 9 = 0 << 4+14 = 14
//document.write(x[13] + ',')
//undefined,
//document.write(x[14] + ',')
//8,
//document.write(x[15] + ',')
//undefined,
//输入 56 个 1 得到(56*8+64 = 448+64 = 512) >>> 9 = 1 << 4+14 = 30
//除以 512,剩余的数值不足 448 的补充为 448,正好 448 的直接补充 512,超过 448 不足 512 的补充为 512,再补充 448
//2^4*32=512 14*32=448 2^9=512
//document.write(x[29] + ',')
//undefined,
//document.write(x[30] + ',')
//448,
//document.write(x[31] + ',')
//undefined,
@flynaj 好像是大白菜 4.6 安装 xp 有此问题,WePE_32_V1.2 安装 xp,用了一天没有重现问题
@flynaj 手头没有多余的 hdmi 设备,今天开机夏普电视又黑屏,重启几次正常,真的有可能是夏普电视的问题吗?
14 天前
回复了 quxinna 创建的主题 程序员 CRC-32 查表法真的存在吗?
@quxinna 好像可以通过结合律: ( A ^ B ) ^ C = A ^ ( B ^ C )推导出查表法等于手算法
但是由于自反性:A ^ B ^ B = A (由结合律可推:A ^ B ^ B = A ^ ( B ^ B ) = A ^ 0 = A )查表法等于 255 个 crc32 值每隔 1byte 进行 xor,算出有 4129476120/24=172061505 种可能性,请教高手对吗?
@ysc3839 用的是 Intel HD Graphics 2000 核显
16 天前
回复了 quxinna 创建的主题 程序员 CRC-32 查表法真的存在吗?
@quxinna
100000010
0x104c11db7

10000001000000000000000000000000000000000
100000100110000010001110110110111

11011000001000111011011011100000000
100000100110000010001110110110111

1011010010000110011100000111011100
100000100110000010001110110110111

11011011100110111111101010110010

结果是一样的,但是不知道怎么会是一样
关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1131 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 20ms · UTC 23:23 · PVG 07:23 · LAX 16:23 · JFK 19:23
♥ Do have faith in what you're doing.