 				{
 					logger.debug("Decrypting " + tmpBuffer.length + " bytes of encrypted data.");
 				}
-				
-				//key.usePadding = false;
 				
 				if ( leftoverBytes > 0 )
 				{

			}
			else
			{
				_lastSixteenBytes.length = 0;
				_lastSixteenBytes.position = 0;
			}

				logger.debug("READING " + amountToRead + " OF " + input.bytesAvailable);
			}


			//Check to see if we have 16 bytes saved from the end of the last pass
			if (_lastSixteenBytes.length > 0)
			{
				//Feeds the in at the beginning of the temp buffer
				_lastSixteenBytes.readBytes(tmpBuffer)
				_lastSixteenBytes.length = 0;
				_lastSixteenBytes.position = 0;
			}

			
			if(amountToRead > 0)
				input.readBytes( tmpBuffer, tmpBuffer.length, amountToRead);

			//If we aren't flushing at the end of a segment, save the last 16 bytes off the end in case they are padding
			//Subtle bug - If we don't save the bytes off the end and control when it tries to unpad, it can unpad data that
			//is valid but happens to look like padding.
			if (!_flush)
			{
				tmpBuffer.position = tmpBuffer.length - 16;
