First, contrary to Mark Kaplun's answer htaccess protecting wp-login is recommended in the Wordpress Codex and far from pointless. It will block many brute force/DDOS attacks BEFORE WP scripts are run and DB Connections and lookups are done i.e. drastically reduces server load; it enabled one of my sites to continue to be responsive instead of slow or falling over. Additionally many brute force tools are likely to halt immediately if presented with an authentication digest request.
As you are required to enter credentials your htaccess is working. But you need to do more.
Protect your admin directory via its own htaccess file. The Codex above suggests (see caveats) "blocking" by IP. This may not be practical if you travel, so I password protect the directory instead, and this works fine.
"(hackers) using the correct username (which is not “admin” but a
random string of character)"
Prevent hackers identifying your (case insensitive) login names:
WP uses your username to create an author URL slug i.e. broadcasting it to the world (even in Google searches). Advice in articles to change your admin user name (without additional warnings) give those taking the advice a false sense of security and demonstrate the article authors lack of knowledge (I haven't seen one hacker article saying try to login with "admin" - but I've seen many suggesting finding author slugs.).
Try browsing yoursite.com/?author=1
(or author=2 or author=3) chances are the resulting URL or content will identify your (case insensitive) login name. N.B. if you changed the initial admin you may have deleted author "1").
Typically Hackers use security tools to list the first ten users (low numbers are more likely to be an admin). Use htaccess to foil most such tools and either 403 or redirect their requests e.g.
RewriteCond %{QUERY_STRING} author=
RewriteRule (.*) https://www.fbi.gov/investigate/cyber/%1 [R=302,L]
However; on most sites it will still be possible to manually identify username from author link URLs which themes normally include in posts. Yours is already known. The solution is to create a new admin user and immediately change its URL slug (user_nicename) entry in the WP database. You do this using a plugin (possibly) https://wordpress.org/plugins/edit-author-slug/ (which you can then remove). Or if confident by using phpMyadmin. If you can login using you new admin user then you can delete your old admin.
You can see the above suggestions in action on my site (click on any author (AW) link to see change to nicename/url slug; and add "?author=1" to the original link to see redirection).