解码压缩的短字符串;使用的压缩不确定 - 更新

时间:2010-02-22 15:29:03

标签: blackberry huffman-code compression

我有一个以未知方式压缩字符串的程序。我知道一些输入和输出产生,但我不确定是用什么来压缩字符串。

以下是我的例子。

(仅38 x a,没有空格或其他任何东西)

In:  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
Out: "21 1A A6 30 00"

(仅32 x a)

In:  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
Out: "1c 1a a7 a0 00"

(31 x a,然后是1b)

In:  "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"
Out: "01 77 c5 53 c0 00"

(31 x b,然后1 a)

In:  "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbba"
Out: "1e 77 54 f3 80 00"


In:   "Hey wot u doing 2day u wanna do something"
Out:  "11 C7 C6 2E 78 CE 6B 8E 3A CD 83 E8 1B 37 C5 C5 A6 B9 D1 E1 B0 69 63 DB 5E 71 15 5C 10 00"

(与之前的字符串相同,但末尾有空格)

In:  "Hey wot u doing 2day u wanna do something "
Out: "12 C7 71 8B 9E 33 9A E2 EB 36 0F A0 2C DF 17 17 7A 67 47 86 DF 4B 1E DA F3 88 AA E0 80 00"

任何帮助/建议都会很棒,谢谢! 此外,它可能有助于了解这些来自BlackBerry 8120

1 个答案:

答案 0 :(得分:1)

通过查看提供的字符串,不太可能有人能够找出使用何种压缩算法。

假设它们也没有加密(但只是在没有输入密钥或其他秘密的情况下使用算法进行转换),我能想到的唯一方法就是蛮力。也就是说,编写一些代码来使用不同的压缩算法转换输入值并观察生成的输出。它似乎不是.NET DeflateStream和GZipStream类使用的LZW算法,因此您可以跳过至少一个;)

我的建议是查看BlackBerry SDK并找出它支持的算法,因为它可能就是其中之一。

您也可能会对本教程感兴趣:Hacking Data Compression