算法是这样的:
首先,根据KEY生成一张256的表记作TAB1,每个元素都是WORD类型的,然后在他后面生成一个0000~0x00ff的表记做TAB2.
然后对TAB1的数据进行排序,就是把数据进行从小到大的排序,并且用TAB2来记录TAB1排序交换的顺序,接着把TAB1初始化成一个0000~0x00ff的表,然后把TAB2的表按照从小到大的顺序进行排序,用TAB1来记录交换的顺序.
这样就生成了TAB1,然后就可以用这张表对明文进行加密了,加密算法就是利用明文的ASCII码作为表的索引取值形成密文.密文同样可以利用这张表还原成原来的数据.
KEY生成的TAB1:
00179808 66 34 2F 59 0B 6C 3E 6B FD 53 A6 7D 2C 50 87 38 f4/Yl>k??,P?
00179818 60 34 0D 64 8A 65 F4 00 C7 1A 07 66 4E 63 D7 12 `4.d???fNc?
00179828 D4 00 02 29 3B 62 B6 48 80 28 5E 32 41 30 94 5E ?);b度?^2A0?
00179838 56 2C D1 06 4F 02 72 2C DF 5F 0A 59 6A 78 16 6A V,?Or,哌.Yjxj
00179848 5D 14 94 0B FC 27 0B 60 BB 15 FE 09 6E 20 E9 29 ]??`??n ?
00179858 C5 73 39 3D F8 1D D7 6D 95 6B 41 1F B8 5E 4D 2D 朋9=?醉?A皋M-
00179868 4D 05 FF 31 02 4E 1F 13 0C 3A 6F 5D F8 79 B7 62 M?N.:o]?封
00179878 1A 36 FE 78 5A 07 A1 6C 66 0B 36 04 9F 17 4E 2C 6?Z§f6?N,
00179888 33 68 9C 52 44 55 11 73 0E 26 D9 2E 64 1A 6E 44 3h?DUs&?dnD
00179898 03 45 19 39 89 65 94 47 10 27 B1 04 C2 10 28 72 E9??'??(r
001798A8 DA 1F 04 39 F5 7E 44 50 9F 2C A7 39 77 33 C0 0D ?9觜DP??w3?
001798B8 6C 68 C3 19 DA 07 B0 24 90 10 BB 5E 06 74 2D 55 lh????晦t-U
001798C8 50 2D 0F 56 8B 1C 59 4A DC 32 81 02 36 1B 9D 10 P-V?YJ??6?
001798D8 82 2E 76 64 E3 35 35 41 22 54 9E 21 91 77 EF 06 ?vd?5A"T???
001798E8 E2 7F D7 4F BC 5F 2F 60 22 00 4F 67 E7 1B 37 42 ?紫歼/`".Og?7B
001798F8 B3 3B E9 1F 78 7F A5 01 43 08 E3 3D C8 2D 3D 24 ??x?C??=$
00179908 1C 45 B5 11 7B 2A E9 7F 0F 0E 3C 2F 0D 44 FE 4A E?{*?</.D?
00179918 AA 1A 17 20 AE 0C C1 01 B2 1D 52 15 50 55 2A 45 ? ???RPU*E
00179928 CD 38 41 5C FE 5E E8 16 7E 58 AF 1A 6F 36 A4 16 ?A\??~X?o6?
00179938 56 0C 39 16 DB 6D 8A 24 69 2F F4 0A 0D 29 06 0D V.9垌?i/?.).
00179948 00 75 56 55 BA 2F CB 21 8D 2D 53 73 11 7A 1A 64 .uVU???Sszd
00179958 E4 57 C6 20 93 6B 41 24 A7 52 13 13 25 30 62 3A 渥??A$б%0b:
00179968 02 42 0A 18 63 6F 75 3C 99 7D 0F 1C 38 4A 90 55 B.cou<?8J?
00179978 BF 1A 78 5B AB 56 66 22 E9 66 37 43 FC 0D 0F 37 ?x[?f"殒7C?7
00179988 62 66 B9 44 F0 60 07 32 40 2B 0E 21 69 66 78 00 bf鼓疣2@+!ifx.
00179998 96 18 49 6F 39 58 BC 37 EB 65 2A 62 38 52 1D 28 ?Io9X?脲*b8R(
001799A8 EB 76 FA 10 95 07 E0 0C 5D 5B B7 47 69 62 83 7D 膂???][非ib?
001799B8 55 0B 71 22 92 41 42 04 AB 33 F4 77 BE 48 E0 7D Uq"?B?赭救帻
001799C8 AB 26 A7 57 C6 76 A3 26 0E 45 B4 1E 3E 76 A1 78 ?ё砌?E?>v▲
001799D8 2A 73 69 68 4A 5C 3A 3F 65 6E DF 5D B2 49 E6 03 *sihJ\:?en咻采?
001799E8 EF 16 D9 28 39 22 31 38 B1 01 EE 0D 2B 4E 03 41 ??9"18??+NA
001799F8 80 66 EB 71 36 3A 25 47 97 3E 73 4E 7A 09 01 71 ?腭6:%G?sNz.q
用来记录交换顺序的TAB2
00179A08 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 .........
00179A18 08 00 09 00 0A 00 0B 00 0C 00 0D 00 0E 00 0F 00 ............
00179A28 10 00 11 00 12 00 13 00 14 00 15 00 16 00 17 00 ........
00179A38 18 00 19 00 1A 00 1B 00 1C 00 1D 00 1E 00 1F 00 ........
00179A48 20 00 21 00 22 00 23 00 24 00 25 00 26 00 27 00 .!.".#.$.%.&.'.
00179A58 28 00 29 00 2A 00 2B 00 2C 00 2D 00 2E 00 2F 00 (.).*.+.,.-.../.
00179A68 30 00 31 00 32 00 33 00 34 00 35 00 36 00 37 00 0.1.2.3.4.5.6.7.
00179A78 38 00 39 00 3A 00 3B 00 3C 00 3D 00 3E 00 3F 00 8.9.:.;.<.=.>.?.
00179A88 40 00 41 00 42 00 43 00 44 00 45 00 46 00 47 00 @.A.B.C.D.E.F.G.
00179A98 48 00 49 00 4A 00 4B 00 4C 00 4D 00 4E 00 4F 00 H.I.J.K.L.M.N.O.
00179AA8 50 00 51 00 52 00 53 00 54 00 55 00 56 00 57 00 P.Q.R.S.T.U.V.W.
00179AB8 58 00 59 00 5A 00 5B 00 5C 00 5D 00 5E 00 5F 00 X.Y.Z.[.\.].^._.
00179AC8 60 00 61 00 62 00 63 00 64 00 65 00 66 00 67 00 `.a.b.c.d.e.f.g.
00179AD8 68 00 69 00 6A 00 6B 00 6C 00 6D 00 6E 00 6F 00 h.i.j.k.l.m.n.o.
00179AE8 70 00 71 00 72 00 73 00 74 00 75 00 76 00 77 00 p.q.r.s.t.u.v.w.
00179AF8 78 00 79 00 7A 00 7B 00 7C 00 7D 00 7E 00 7F 00 x.y.z.{.|.}.~..
00179B08 80 00 81 00 82 00 83 00 84 00 85 00 86 00 87 00 ????????
00179B18 88 00 89 00 8A 00 8B 00 8C 00 8D 00 8E 00 8F 00 ????????
00179B28 90 00 91 00 92 00 93 00 94 00 95 00 96 00 97 00 ????????
00179B38 98 00 99 00 9A 00 9B 00 9C 00 9D 00 9E 00 9F 00 ????????
00179B48 A0 00 A1 00 A2 00 A3 00 A4 00 A5 00 A6 00 A7 00 ????????
00179B58 A8 00 A9 00 AA 00 AB 00 AC 00 AD 00 AE 00 AF 00 ????????
00179B68 B0 00 B1 00 B2 00 B3 00 B4 00 B5 00 B6 00 B7 00 ????????
00179B78 B8 00 B9 00 BA 00 BB 00 BC 00 BD 00 BE 00 BF 00 ????????
00179B88 C0 00 C1 00 C2 00 C3 00 C4 00 C5 00 C6 00 C7 00 ????????
00179B98 C8 00 C9 00 CA 00 CB 00 CC 00 CD 00 CE 00 CF 00 ????????
00179BA8 D0 00 D1 00 D2 00 D3 00 D4 00 D5 00 D6 00 D7 00 ????????
00179BB8 D8 00 D9 00 DA 00 DB 00 DC 00 DD 00 DE 00 DF 00 ????????
00179BC8 E0 00 E1 00 E2 00 E3 00 E4 00 E5 00 E6 00 E7 00 ????????
00179BD8 E8 00 E9 00 EA 00 EB 00 EC 00 ED 00 EE 00 EF 00 ????????
00179BE8 F0 00 F1 00 F2 00 F3 00 F4 00 F5 00 F6 00 F7 00 ????????
00179BF8 F8 00 F9 00 FA 00 FB 00 FC 00 FD 00 FE 00 FF 00 ????????
交换之后的TAB2在经过排序,TAB1就记录成了下面的表:
00179808 74 00 B6 00 DE 00 DB 00 A8 00 FA 00 A3 00 7B 00 t.??????{.
00179818 73 00 CB 00 CF 00 03 00 39 00 D1 00 CA 00 27 00 s.??.9.??'.
00179828 02 00 59 00 C7 00 99 00 57 00 6F 00 6C 00 BD 00 .Y.??W.o.l.?
00179838 5F 00 0E 00 07 00 60 00 C2 00 B5 00 F3 00 DA 00 _...`.????
00179848 2A 00 19 00 55 00 C3 00 2C 00 15 00 45 00 5B 00 *..U.?,..E.[.
00179858 EB 00 85 00 3F 00 E0 00 DD 00 41 00 BE 00 62 00 ???.??A.?b.
00179868 0D 00 6D 00 9F 00 29 00 80 00 BB 00 F6 00 C9 00 ..m.?).????
00179878 76 00 F5 00 10 00 DF 00 18 00 0A 00 31 00 5E 00 v.?.?...1.^.
00179888 D7 00 A6 00 AB 00 E8 00 51 00 67 00 35 00 90 00 ????Q.g.5.?
00179898 92 00 7E 00 CE 00 97 00 54 00 0C 00 24 00 E7 00 ?~.??T...$.?
001798A8 42 00 7D 00 FC 00 A4 00 61 00 7F 00 71 00 1E 00 B.}.??a..q..
001798B8 D9 00 34 00 12 00 50 00 22 00 BF 00 EC 00 AA 00 ?4..P.".???
001798C8 63 00 AF 00 3D 00 9D 00 70 00 08 00 3A 00 23 00 c.?=.?p..:.#.
001798D8 66 00 CD 00 75 00 8A 00 A9 00 48 00 F1 00 0F 00 f.?u.??H.?.
001798E8 FE 00 A2 00 C1 00 C4 00 00 00 D6 00 3B 00 8D 00 ????..?;.?
001798F8 83 00 43 00 FD 00 04 00 13 00 86 00 65 00 4D 00 ?C.?..?e.M.
00179908 94 00 26 00 5C 00 FF 00 21 00 68 00 8F 00 9E 00 ?&.\.?!.h.??
00179918 36 00 44 00 1B 00 06 00 3E 00 2B 00 AC 00 95 00 6.D...>.+.??
00179928 7C 00 B9 00 C0 00 2F 00 B4 00 37 00 77 00 2E 00 |.??/.?7.w...
00179938 1A 00 2D 00 E1 00 4F 00 69 00 16 00 5A 00 1D 00 .-.?O.i..Z..
00179948 ED 00 AD 00 6A 00 49 00 64 00 EA 00 F7 00 CC 00 ??j.I.d.???
00179958 B2 00 46 00 DC 00 4E 00 A7 00 28 00 6B 00 82 00 ?F.?N.?(.k.?
00179968 8C 00 32 00 E4 00 84 00 F9 00 3C 00 9C 00 AE 00 ?2.???<.??
00179978 38 00 B8 00 B0 00 4B 00 D5 00 8E 00 20 00 78 00 8.??K.?? .x.
00179988 D2 00 91 00 C5 00 6E 00 5D 00 47 00 D3 00 01 00 ???n.].G.?.
00179998 33 00 E3 00 B3 00 79 00 D0 00 C6 00 A5 00 56 00 3.??y.???V.
001799A8 F0 00 25 00 11 00 1C 00 B7 00 98 00 C8 00 F8 00 ?%...????
001799B8 17 00 4C 00 8B 00 0B 00 72 00 F2 00 9A 00 FB 00 .L.?.r.???
001799C8 53 00 B1 00 EF 00 52 00 93 00 40 00 EE 00 F4 00 S.??R.?@.??
001799D8 E9 00 D8 00 BA 00 88 00 E2 00 BC 00 9B 00 09 00 ???????..
这个就是查表加密和解密的过程:
.text:00406025 loc_406025: ; CODE XREF: sub_405F62+D2j
.text:00406025 movzx eax, byte ptr [esi]
.text:00406028 mov al, [ebx+eax*2]
.text:0040602B stosb
.text:0040602C inc esi
.text:0040602D dec [ebp+arg_4]
.text:00406030
.text:00406030 loc_406030: ; CODE XREF: sub_405F62+C1j
.text:00406030 cmp [ebp+arg_4], 0
.text:00406034 jnz short loc_406025
阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开
发者可享99元/年,续费同价!