2010-02-22 4 views
4

알 수없는 방식으로 문자열을 압축하는 프로그램이 있습니다. 나는 약간의 인풋과 아웃풋을 알고 있지만, 스트링을 압축하는데 무엇이 사용되고 있는지 확실하지 않습니다.압축 된 짧은 문자열 디코딩. 압축에 대해 불확실 함 - Updated

다음은 나의 예입니다.

(단지 38 XA, 공백 또는 아무것도)

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

(단지 32 XA)

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

(31 XA 후 1 b)

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

(31 xb, 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에서 온 것임을 알 수 있습니다.

+0

다른 입력을 압축하면 시도 할 수, 예를 들어, 널 문자열, 단일 문자, 두 문자? –

+0

나는 두려워하지 않는다. 나는 그 프로그램을 가지고 있지 않으며, 단지 이러한 예제를 제공 받았고 압축 방법을 알아 내려고했다. 나는 그렇게하기에는 효율적이지 못하기 때문에 30 자 이하의 문자열을 압축하지 않을 것이라고 말했다. – James

+0

추가 할 다른 하나의 관찰; 두 개의 유사한 문자열의 경우 동일한 지점에 두 개의 반복 된 바이트가 있습니다. 첫 번째는 c5c5이고 두 번째는 1717입니다. 우연 일 수도 있고, 아마도 "nn"과 관련이있을 수도 있습니다. – James

답변

1

제공된 문자열을보고 어떤 종류의 압축 알고리즘을 사용하는지 알 수는 없습니다.

키가 암호화되어 있지 않거나 (단지 키 또는 다른 종류의 암호가 입력되지 않은 알고리즘을 사용하여 변환 된 경우), 내가 생각할 수있는 유일한 접근 방법은 무차별 한 방법입니다. 즉, 다른 압축 알고리즘을 사용하여 입력 값을 변환하고 생성 된 출력을 관찰하는 코드를 작성하십시오.

내 권장 사항은 BlackBerry SDK가 지원하는 알고리즘을 확인하고, 해당 알고리즘이 지원하는 알고리즘을 확인하는 것입니다. 그것들 중의 하나 일 가능성이 높습니다.

또한 관심이 자습서를 찾을 수 있습니다 : Hacking Data Compression

+0

링크를 이용해 주셔서 감사합니다. Blackberry SDK는 zlib, gzip 및 deflate에 대한 지원을 표시합니다. 이들 중 아무 것도 작동하지 않습니다. 블랙 베리에 많은 암호화 API 파일이 있지만, 압축되어 있고 암호화되어 있지 않기를 바랄 것입니다. 나는 방금 내가 놓친 것이 있었으면 좋겠다고 생각했지만, 나는 당신이 제안한 것처럼 무차별 방식으로 시도 할 것입니다. 내가 어떻게 타서 .. – James