比如说,最简单的加密系统之一就是 y = x+1 mod 256,这个系统把 ascii 的每个字符往后移一格。因此,"Hello World"被加密后将显示为“Ifmmp!Xpsme”。这个问题问的是,假设你看到了“Ifmmp!Xpsme”,你能否将原来的“Hello World”还原。
当然,本问题中的加密系统不会象 y = x+1 mod 256 那么简单了,一般比较常见的(简单)加密系统包括:y = a(x) = x+k mod 256, k = 1,2,...,255(要一个一个试);y = b(x) = kx mod 256,且 k 和 256 要互素,y = c(x) = x^k mod 256,也要求 k 和 256 互素,或者也有可能是 y = a, b, c 之间的某种函数叠加。
如果遇到类似于 SHA-1 那样,后面的变一个字符可能连前面的东西也会因之改变。例如,
SHA1("The quick brown fox jumps over the lazy dog") = 2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12
SHA1("The quick brown fox jumps over the lazy cog") = de9f2c7f d25e1b3a fad3e85a 0bd17d9b 100db4b3
两句话变了一个字母,加密内容看似天壤之别。
:00400000 EB04 jmp 00400006
:00400002 AF scasd
:00400003 C2BFA3 ret A3BF
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00400000(U)
|
:00400006 81EC00010000 sub esp, 00000100
:0040000C 31C9 xor ecx, ecx
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00400013(C)
|
:0040000E 880C0C mov byte ptr [esp+ecx], cl
:00400011 FEC1 inc cl
:00400013 75F9 jne 0040000E
:00400015 31C0 xor eax, eax
:00400017 BAEFBEADDE mov edx, DEADBEEF
在 google 一搜 can you crack it, 就到了这里,注册了一个帐号就进来了
答案是方括号中的字符串【Pr0t3ct!on#cyber_security@12*12.2011+】
这题绝对不像表面上看到的那样简单,那些机器码能看明白,只是热热身而已,而且里面很多看起来没有用的数据,最后都变成关键的线索,这题出得真是太好了。。。