org.apache.commons.codec.binary.Base32 декодирует в один и тот же массив байтов для разных строк

#java #base32

#java #base32

Вопрос:

У меня есть закодированная строка, и я пытаюсь ее декодировать. Но я получаю то же byte[] самое, когда добавляю в него нули.

 String val = "VU4ACWPU52WWBTKV4PLCC6BQPA5E7ZLYITGR4NLIZKYZKPPZU2SPZYQPECFA6SCIOYQTU4P4XFERESTTXUSOM4BBZYARDBKHDIGZFPWQ";

Base32 base32 = new Base32(0);

base32.decode(val);
base32.decode("000"  val);
 

Оба приведенных выше декодирования возвращают один и тот же массив байтов. Кто-нибудь может помочь мне понять, почему это то же самое, когда я добавил к нему несколько нулей? Спасибо.

Ответ №1:

Посмотрите здесь:

https://guava.dev/releases/16.0/api/docs/com/google/common/io/BaseEncoding.html

Вы можете видеть, что base32 использует Az и 2-7 в качестве кодировки. Нули ничего не изменят.

Комментарии:

1. Это одна и та же библиотека? Моя библиотека apache

2. Он имеет ту же функциональность. Посмотрите на строку 56 вплоть до 82: commons.apache.org/proper/commons-codec/jacoco /…

3. понял. Спасибо. Я думаю, я должен выбрать шестнадцатеричное кодирование / декодирование

4. изменен Base32 base32 = new Base32(0); на Base32 base32 = new Base32(true); работал