I would say that a login should feel instantaneous. That's not to say it will be instantaneous but rather the UI animations and state should hide any delays and make the user feel as if it were.
I can see several improvements you could make to your login system:
There are better ways to prevent automated password guessing such as exponential delays on requests. The user gets the password wrong twice and they have to wait 10 seconds to try again. They get it wrong again and now have to wait 20 seconds etc. This removes any hindrance to actual users but makes brute force attacks impossible as it takes longer each guess so if you don't get it in the first few tries its pointless.
Why bother with a robust but slow encryption algorithm when the user is likely to use an insecure password in the first place? Use an industry standard tried and tested algorithm that is quick to compute and combine it with two-factor authentication of some sort for added security. This will always be more secure than a password alone as even if someone manages to guess the password they still need to get past the second factor of authentication which requires access to a users physical 2FA device.
The data in the app itself should be lazy loaded when required. Your app UI should be loaded and cached so it is always available to the user and then any data can be fetched asynchronously while presenting a loading bar or spinner to the user. Only load the data required for the current page as the user may not need all of the data and you would waste bandwidth and server processing time. If it takes while to load the data for the app then making the user feel like they have logged in by showing them placeholder UI will improve the feel of responsiveness in your app.