Я собираюсь использовать алгоритм для кодирования переменной длины, но очень длинный Строка, извлеченная из файла XML, тогда эти закодированные данные должны сохраняться в базе данных.Насколько эффективен алгоритм кодирования/декодирования класса BASE64 в Java?
Позже, когда я получаю второй файл, мне нужно получить зашифрованные данные из базы данных (ранее сохраненные), а затем декодировать их и проверить с новыми данными для дублирования.
Я попытался org.apache.commons.codec.binary.Base64
класс он имеет 2 метода:
encodeBase64(Byte[] barray)
decodeBase64(String str)
, который работает прекрасно, и решает мою проблему. Но он преобразует строку 55 char только в 6 строк символов.
Так что я задаюсь вопросом, есть ли случай, когда этот алгоритм кодирует 2 строки, которые очень большие и имеют только 1 несоответствие символов (например) в одинаковые закодированные байтовые массивы.
Я не знаю о классе Base64
, но если кто-нибудь может мне помочь, это будет очень полезно.
Если вы можете предложить любой другой алгоритм, который делает большую строку длинной фиксированной длины и решает мою цель, я буду рад ее использовать.
Заранее спасибо.
Любая правильная реализация base64 сделает строки больше не меньше. Вы пытаетесь сжать String? –
да, на самом деле мне нужно немного алгоритма, чтобы сжать длинную строку в меньшую и сохранить в db, а затем раздуть ее, чтобы получить исходную строку. Я видел реализацию класса ZipOutputStream через Интернет, но я не пробовал. –
Я думаю, что вы ищете хэш-функцию, такую как [MD5] (http://en.wikipedia.org/wiki/MD5) (которая преобразует все входные данные в 128-байтовый вывод). Кодировка Base64, как правило, приводит к выводу, который составляет четыре трети размера ввода, поэтому он не приводит к выходу фиксированной длины вообще. –