например, это даст правильное шестнадцатеричное значение 0x41 из 'A':
StringBuffer strBuf = new StringBuffer();
strBuf.append(toBase64("A".getBytes()));
String ciphertext = strBuf.toString();
byte[] encryted_bytes = ciphertext.getBytes();
byte[] cipherBytes = fromBase64(new String(encryted_bytes));
StringBuilder sb = new StringBuilder();
for (byte b : cipherBytes) {
sb.append(String.format("%02X ", b));
}
Log.d("hole", "hex:" + sb.toString());
Но без base64 это получит 5B 42 40 33 33 64 62 35 61 30
:
StringBuffer strBuf = new StringBuffer();
strBuf.append(("A".getBytes()));
String ciphertext = strBuf.toString();
byte[] encryted_bytes = ciphertext.getBytes();
byte[] cipherBytes = new String(encryted_bytes).getBytes();
StringBuilder sb = new StringBuilder();
for (byte b : cipherBytes) {
sb.append(String.format("%02X ", b));
}
Log.d("hole", "hex:" + sb.toString());
Метод base64:
public static String toBase64(byte[] bytes) {
return Base64.encodeToString(bytes, Base64.NO_WRAP);
}
public static byte[] fromBase64(String base64) {
return Base64.decode(base64, Base64.NO_WRAP);
}
Каков шаг второго кода генерации 5B 42 40 33 33 64 62 35 61 30
?И как base64 заставляет его генерировать правильный гекс?