@Override public byte readByte() { if (!isOpen()) { return -1; } if (filename == null && count > maxCount) { open = false; return -1; } if (outAlgoBufferIx == outAlgoBuffer.length) { algo.encrypt_block(inputAlgoBuffer, outAlgoBuffer); for (outAlgoBufferIx = 0; outAlgoBufferIx < inputAlgoBuffer.length; outAlgoBufferIx++) { inputAlgoBuffer[outAlgoBufferIx] = outAlgoBuffer[outAlgoBufferIx]; } outAlgoBufferIx = 0; } byte prng = outAlgoBuffer[outAlgoBufferIx++]; if (filename == null) { count++; return prng; } /* * we have a real filename to encrypt */ byte data = super.readByte(); return (byte) (prng ^ data); }