public static void decode(InputStream src, OutputStream dst) {
        byte[] bytesRead = new byte[8192];
        byte[] bytesToWrite = new byte[8192];
        byte[] alphabet = getBytesAlphabet();
        int numberOfBytesRead;

        try {
            int i;
            while ((numberOfBytesRead = src.read(bytesRead)) != -1) {
                for (i = 0; i < numberOfBytesRead; i++) {
                    bytesToWrite[i] = alphabet[Util.byteToInt(bytesRead[i])];
                    moveByteToFirstPos(alphabet, Util.byteToInt(bytesRead[i]));
                }
                dst.write(bytesToWrite, 0, numberOfBytesRead);
            }
            dst.close();
        } catch (IOException e) {
            System.err.println("An error happened while decoding.");
            e.printStackTrace();
        }
    }