I am trying to do such conversions, but i have a little problem.
Let’s say i have a following String:
String in = "1234567890123456";
Then I convert it to ByteArrayInputStream like this:
ByteArrayInputStream bais = new ByteArrayInputStream(in.getBytes("UTF-8"));
I also have:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Then I do my encryption:
ch.encrypt(bais, baos);
So now I have my “output” in baos. When i do such thing:
byte[] b2 = baos.toByteArray();
int[] i2 = toUnsignedIntArray(b2);
writeIntegersAsHex(i2);
where (I know it is not the most elegant way but it’s only for testing):
public static void writeIntegersAsHex(int[] integers) {
int height = integers.length;
for (int i = 0; i < height; i++) {
System.out.print(Integer.toHexString(integers[i]) + ",");
}
System.out.println("");
}
I get such output:
d1,68,a0,46,32,37,25,64,67,71,17,df,ee,ef,2,12,
And that output is correct, because when I process file that contains the same string as in that output is the same. But I can’t get a proper string from baos.
Please don’t ask me why am i doing it this way, because it was not my call. I am a student and this is one of the excersises.
The algorithm (btw it’s aes128) works ok, with files but i can’t get string to inputstream and outputstream to string work properly.
At this point your output is just arbitrary binary data. It’s not encoded text – it’s just a bunch of bits.
To convert that to a sensible string which will let you convert it back to the original bytes, you should probably use either hex or base64. There’s a public domain base64 library which works well in my experience, or plenty of other alternatives (for both base64 and hex).