public int read() throws IOException
public synchronized int read() throws IOException
  public int read() throws IOException  {    if (isStream)      {        byte[] buf = new byte[1];        int in = super.read();        if (in == -1)          return -1;        buf[0] = (byte) in;        try          {            cipher.update(buf, 0, 1, buf, 0);          }        catch (ShortBufferException shouldNotHappen)          {            throw new IOException(shouldNotHappen.getMessage());          }        return buf[0] & 0xFF;      }    if (state == DEAD) return -1;    if (available() == 0) nextBlock();    if (state == DEAD) return -1;    return outBuffer[outOffset++] & 0xFF;  }