Crypto JS .en c .Base64.parse vs Base64.decodeBase64, в чем разница? - PullRequest
0 голосов
/ 26 мая 2020

Хотите понять, чем эти двое разные? Или они такие же?

var key2 = CryptoJS.enc.Base64.parse(apiKey);

&

byte[] decodedBase64APIKeyByteArray = Base64.decodeBase64(apiKey);

Я прошел через API обоих, но похоже, что оба делают преобразования, но мой вопрос: будет ли преобразование таким же вход?

Будет ли результат для обоих одинаков?

1 Ответ

0 голосов
/ 26 мая 2020

Оба декодируют нормальный base64 с алфавитом base64 по умолчанию, включая возможные символы заполнения в конце.

Однако есть несколько отличий.

  • Документация: Commons- code c один, по крайней мере, частично задокументирован.

  • Входные данные: общий-код c разрешает base64 и удаляет окончания строк и тому подобное (требуется, например, для декодирования MIME). Беглый взгляд на код Crypto JS показывает, что он требует base64 без пробелов. Таким образом, декодер на основе Java допускает разные формы ввода.

  • Реализация: парсинг Crypto JS вызывает слезы на глазах, а не радость. У него ужасная производительность, если только от того, как он обрабатывает base 64 без потоковой передачи. Достаточно глупо использовать indexOf для поиска возможных символов заполнения впереди , что ужасно плохо и неэффективно. Реализация Apache лишь немного лучше. Оба должны использоваться только для относительно небольших объемов данных.

  • Вывод: Crypto JS возвращает массив слов , а общий код c one возвращает массив байтов. Для ключей это не имеет большого значения, поскольку Java обычно ожидает массив байтов для SecretKeySpec, тогда как Crypto JS напрямую использует массив слов в качестве ключа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...