я пытаюсь кодировать этот байтовый массив:Java Base64 кодирование дает различные результаты, чем C base64 закодировать
[237, 217, 204, 218, 109, 227, 157, 145, 35, 152, 85, 142, 182, 180, 120, 8]
Использование Java библиотеки org.apache.commons.codec.binary.Base64.encodeBase64
и org.bouncycastle.util.encoders.Base64.encode
это результаты:
[55, 100, 110, 77, 50, 109, 51, 106, 110, 90, 69, 106, 109, 70, 87, 79, 116, 114, 82, 52, 67, 65, 61, 61]
(обратите внимание на двойную '=' заполняющий символ в конце)
Использование base64.c Copyright (c) 1995-2001 Kungliga Tekniska Högskolan (Royal Institute of Technology, Stockholm, Sweden)
это выход:
[55, 100, 110, 77, 50, 109, 51, 106, 110, 90, 69, 106, 109, 70, 87, 79, 116, 114, 82, 52, 67, 66, 72, 114]
Может ли кто-нибудь объяснить, почему? Как я могу заставить библиотеку Java/C работать одинаково?
Я бы прочитал base64 как текст, так как это точка его использования;) Кажется, вы получаете разные дополнения в конце. Вы знаете, что это проблема. Base64 не является четко определенными спецификациями. –
Примечание: код C составляет 13 лет, возможно, есть более новая версия. –