【问题标题】:Decoding a compressed short string; uncertain on compression used - Updated解码压缩的短字符串;不确定使用的压缩 - 更新
【发布时间】:2010-02-22 15:29:02
【问题描述】:

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

这是我的例子。

(只有 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,然后 1 b)

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 可能会有所帮助

【问题讨论】:

  • 你可以尝试压缩一些其他输入,例如一个空字符串,一个字符,两个字符?
  • 恐怕我不能;我没有程序,只是给出了这些示例并要求制定压缩方法......我被告知它不会压缩低于 30 个字符的字符串,因为这样做效率不高。
  • 要添加的另一个观察结果;对于两个相似的字符串,在同一点有两个重复的字节。第一个是c5c5,第二个是1717。可能是巧合,也可能与wann中的“nn”有关?
  • 更新了一些我设法得到的字符串。

标签: blackberry huffman-code compression


【解决方案1】:

仅仅通过查看提供的字符串,人们不太可能知道正在使用哪种压缩算法。

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

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

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

【讨论】:

  • 感谢您提供的链接,我现在就解决这个问题。 Blackberry SDK 显示对 zlib、gzip 和 deflate 的支持……这些似乎都不起作用。黑莓上有很多加密 api 文件,但我希望它只是压缩而不是加密,无论如何我希望我只是错过了一些东西:) 但我会按照你的建议尝试蛮力方法并让你知道我是怎么过的..
猜你喜欢
  • 2011-11-12
  • 1970-01-01
  • 2019-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多