В рамках попытки настроить SAML AuthN с Google Search Appliance мне нужно преобразовать мой ответ в base64.Для подтверждения концепции я просто использовал отладчик в IntelliJ IDEA, чтобы заменить строку версией, сгенерированной командой openssl:
openssl base64 -in inFileName -out outFileName
Теперь мне нужно, чтобы версия работала без моего непосредственного вмешательства.Я использую библиотеку кодеков Apache commons base64 (v. 1.4), кодировку UTF-8, lineLength 64, и код выглядит так:
Base64 encoder = new Base64(64);
signedSamlResponse = signedSamlResponse.replaceAll("[\n\r]","");
byte[] bytes = encoder.encode(signedSamlResponse.getBytes("UTF-8"));
signedSamlResponse = new String(bytes,0,bytes.length);
Результат довольноблизко к тому, что мне нужно.Если я выполняю шифрование openssl в строке непосредственно перед тем, как библиотека apache сделает это (скопируйте signSamlResponse до выполнения строки 3), а затем запустите diff, два результата будут почти идентичны.Единственное отличие - второй последний символ в последней строке, и это различие было постоянным во всех моих попытках.
Версия Openssl:
dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPgo=
Версия Apache:
dD48L0Fzc2VydGlvbj48L3NhbWxwOlJlc3BvbnNlPg==
Что мне нужно сделать с байтовым массивом или строкой, из которой он получен, чтобы сопоставить два результата?