2009-09-29 3 views
0

Я хочу сжать/преобразовать строку как новую строку.Строка ввода, сжатая как строка

то есть: входная строка:

USERNAME/REGISTERID 

Выходная строка после компресса:

<some-string-in-UTF8-format> 

выходной строка после того, как декомпрессии:

USERNAME/REGISTERID 

Есть некоторые компрессы или хэш-метод для этого трансформация?

Я предпочитаю некоторое решение с использованием Java или алгоритм с основными шагами процесса.

Я уже читал и пытаюсь использовать преобразование Хаффмана, но сжатый вывод состоит из байтов исходящей UTF-8 байтов.

+1

Почему это вики? – AnthonyWJones

+0

извините ... я ошибаюсь. – apast

ответ

1

Посмотрите на Base64, commons-codec и т.д.

Commons-код обеспечивает очень простой Base64 class использовать.

Вы не можете использовать хеш-функцию, поскольку функции хэширования обычно предназначены только для односторонних действий: например, с использованием хэша MD5 или SHA1, вы не сможете его декодировать, чтобы узнать, что такое исходное сообщение.

+0

Действительно, хеш-функции в одну сторону. Спасибо! И минус – apast

+0

@matt: для этой цели можно использовать функцию хэширования, даже если это односторонняя функция, вам просто нужно сохранить на некоторой стороне стойкую структуру (базу данных, файл, что бы то ни было) серверную строку обратной корреспонденции используется в ключе для пользователя/регистра ...хорошо, если вы это сделаете, это может быть даже случайное количество чисел или строк. – kriss

2

Вы можете использовать ZipOutputStream.

ByteArrayOutputStream result = new ByteArrayOutputStream(); 
    new ZipOutputStream(result).write("myString".getBytes()); 
    byte[] bytes = result.toByteArray(); 

Вам просто нужно выяснить правильную кодировку строки. Этот случай должен выполняться с помощью Base64 representation.

0

Если у вас есть идентификаторы базы данных для ваших идентификаторов, как предлагают ваши имена, почему бы не использовать этот номер в качестве кодировки? (поместите его как строку, если хотите).

Вы не должны надеяться на лучшее сжатие с использованием алгоритмов сжатия, так как все они нуждаются в некоторых заголовках, а размер заголовка сам по себе, вероятно, длиннее вашей входной строки.

+0

У меня нет базы данных для ключей. Сжатие не для уменьшения передачи данных, а простое и наивное обфускация исходных данных. Thank, И Последнее – apast

0

Похоже, кто-то просит вас обфускать комбинации имени пользователя и пароля. Это, вероятно, не очень хорошая идея, поскольку она предлагает безопасность там, где ее нет. Вы могли бы также реализовать шифрование ROT13 для этого и использовать двойной ROT13 для дешифрования.

Смежные вопросы