Q: Converting String to InputStream, and OutputStream to String back again 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.

A: 
But I can't get a proper string from baos.

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).

A: public static void main(String[] args) throws IOException {
        String in = "1234567890123456";
        ByteArrayInputStream bais = new ByteArrayInputStream(in.getBytes("UTF-8"));
        ByteArrayOutputStream baos = new ByteArrayOutputStream();

        int i;
        while ( ( i = bais.read() ) != -1  ){
            baos.write(i);
            baos.flush();
             }

        System.out.print(baos.toString());
    }

