2017-11-23 23 views
0

10-16 바이트 키를 사용하여 250자를 암호화하는 알고리즘이나 방법이 있습니까? 암호화 된 문자열의 크기는 16 자 미만으로 유지됩니까? 나는 AES 128/256 + DEFLATE를 사용해 보았지만 최종 암호화 된 문자열은 예상되는 문자열 길이에 비해 상당히 큽니다.250 자 및 16 바이트 키에서 작은 암호화 된 출력 (약 16 바이트)을 생성하는 방법은 무엇입니까?

감사합니다.

+2

아니요, 임의의 데이터를 20 배 축소 할 수있는 알고리즘은 없습니다. 정보 이론의 법칙을 위반하는 것입니다. –

+0

"예상되는 문자열 길이"는 무엇을 의미합니까? 정확히 당신이 기대하는 것은 무엇입니까? –

답변

1

먼저 암호화하기 전에 암호화를 시도해야합니다. "AES 128/256 + DEFLATE"가 압축하기 전에 암호화한다는 것을 의미하면 압축 된 데이터가 압축기에 대해 사실상 무작위이므로 압축을하지 않습니다.

두 번째로, 수행 한 경우에도 일반적으로 250 자 정도의 많은 압축을 기대하지는 않습니다. 압축기는 패턴을 찾기 위해 압축기보다 더 많은 데이터가 필요합니다.

셋째, 많은 데이터가 있더라도 매우 중복되는 데이터는 16 배의 압축률을 얻지 못할 것입니다.

0

기술적으로는 가능하지만 "문자"의 정의에 따라 다릅니다.

예를 들어, Noël은 4 문자라고 생각할 수 있습니다. 그러나 유니 코드 실제로 다섯 코드 포인트입니다 :

  • N + o + + ¨ + le (분음을 결합하면 U를 사용 + 0308) 조합 분음 부호가 흥미

; 분음 기호를 계속 누적 할 수 있습니다. 당신은 여전히 ​​네 "문자"이 그래서있는 동안, 당신은 모든 추가 코드 포인트의 종류가 -

  • 노엘

위의 텍스트가 네 "문자"이지만입니다 114 코드 포인트.

발음 구별 부호를 추가하면 문자 당 더 많은 정보를 얻을 수 있습니다.

다음은 유니 코드가 큰 알파벳을 가지고 있다는 사실입니다. 알파벳을 다른 비행기로 확장하면 많은 정보를 인코딩 할 수 있습니다. 그것은 base-64와 같지만 base-195088과 같습니다.

유래 트위터 인코딩 문제를 기반으로 : 몇 "문자"에 많은 정보를 밀어 넣는에 대한 자세한 내용은

이 stackexchange 코드 요청을 참조하십시오

16 자 또는 16자를 사용하는 경우 모두 크게 다릅니다.

+0

내 브라우저에서 매우 재미있어 보입니다. – martinstoeckli

0

설명하는 알고리즘은 키드 해시입니다. 절단 된 Hmac/sha256은 사양에 맞습니다. 즉, 생성 된 해시의 16 바이트 만 사용합니다. 물론 이것은 되돌릴 수 없습니다.