question: private int encryptBlockWithIV ( byte [ ] in , int inOff , byte [ ] out , int outOff ) throws DataLengthException , IllegalStateException { if ( ( inOff + blockSize ) > in . length ) { throw new DataLengthException ( "input buffer too short" ) ; } if ( count == 0 ) { if ( ( outOff + 2 * blockSize + 2 ) > out . length ) { throw new DataLengthException ( "output buffer too short" ) ; } cipher . processBlock ( FR , 0 , FRE , 0 ) ; for ( int n = 0 ; n < blockSize ; n ++ ) { out [ outOff + n ] = encryptByte ( IV [ n ] , n ) ; } System . arraycopy ( out , outOff , FR , 0 , blockSize ) ; cipher . processBlock ( FR , 0 , FRE , 0 ) ; out [ outOff + blockSize ] = encryptByte ( IV [ blockSize - 2 ] , 0 ) ; out [ outOff + blockSize + 1 ] = encryptByte ( IV [ blockSize - 1 ] , 1 ) ; System . arraycopy ( out , outOff + 2 , FR , 0 , blockSize ) ; cipher . processBlock ( FR , 0 , FRE , 0 ) ; for ( int n = 0 ; n < blockSize ; n ++ ) { out [ outOff + blockSize + 2 + n ] = encryptByte ( in [ inOff + n ] , n ) ; } System . arraycopy ( out , outOff + blockSize + 2 , FR , 0 , blockSize ) ; count += 2 * blockSize + 2 ; return 2 * blockSize + 2 ; } else if ( count >= blockSize + 2 ) { if ( ( outOff + blockSize ) > out . length ) { throw new DataLengthException ( "output buffer too short" ) ; } cipher . processBlock ( FR , 0 , FRE , 0 ) ; for ( int n = 0 ; n < blockSize ; n ++ ) { out [ outOff + n ] = encryptByte ( in [ inOff + n ] , n ) ; } System . arraycopy ( out , outOff , FR , 0 , blockSize ) ; } return blockSize ; }
target:  Do the appropriate processing for CFB IV mode encryption.