Я хочу понять, почему существует разница между кодировкой в командной строке openssl и кодировкой, выполняемой через android .util.Base64
// содержимое data.out = "a"
openssl base64 -A -in data.out -out data_en c .out
cat data_en c .out
YQo =
Я пытался использовать android Base64, но не может получить тот же вывод. Я пытался использовать diff charsets и все возможные значения флага.
String str = "a";
int[] flags = new int[]{Base64.DEFAULT, Base64.CRLF, Base64.NO_CLOSE, Base64.NO_PADDING,
Base64.NO_WRAP, Base64.URL_SAFE};
int count= 0;
for(int flag: flags) {
String encStr = Base64.encodeToString(str.getBytes(StandardCharsets.UTF_8), flag);
android.util.Log.i("CERT_LOG", "UTF_8: " + (count) + " Encoded data value in code " + encStr);
encStr = Base64.encodeToString(str.getBytes(StandardCharsets.UTF_16LE), flag);
android.util.Log.i("CERT_LOG",
"UTF_16LE: "+ (count) + " Encoded data value in code " + encStr);
encStr = Base64.encodeToString(str.getBytes(StandardCharsets.UTF_16), flag);
android.util.Log.i("CERT_LOG",
"UTF_16: "+ (count) +" Encoded data value in code " + encStr);
encStr = Base64.encodeToString(str.getBytes(StandardCharsets.UTF_16BE), flag);
android.util.Log.i("CERT_LOG",
"UTF_16BE: "+ (count) +" Encoded data value in code " + encStr);
encStr = Base64.encodeToString(str.getBytes(StandardCharsets.US_ASCII), flag);
android.util.Log.i("CERT_LOG",
"US_ASCII: "+ (count) +" Encoded data value in code " + encStr);
encStr = Base64.encodeToString(str.getBytes(StandardCharsets.ISO_8859_1), flag);
android.util.Log.i("CERT_LOG", "ISO_8859_1: "+ (count++) +" Encoded data value in code " + encStr);
}
Но ни один из выводов не соответствовал выводам из командной строки. Может кто-нибудь пролить свет на то, что мне не хватает.