The best I think is SHA1 hash algorithm, it is 128 bit by standard. I remember when I did my PHP thesis using it :). It is the most secure of all.
Use Forms Authentication (
https://msdn.microsoft.com/en-us/library/t8yy6w3h.aspx
):
<configuration>
<connectionStrings>
<add name="SqlServices" connectionString="Data Source=MySqlServer;Integrated Security=SSPI;Initial Catalog=aspnetdb;" />
</connectionStrings>
<system.web>
<authentication mode="Forms">
<forms loginUrl="login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlServices"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
passwordFormat="Hashed"
applicationName="/" />
</providers>
</membership>
</configuration>
</system.web>
U just change the instance name and the login page.
The default hash alg. is SHA1 and it changes to HMACSHA256 or SHA256 in the .NET 4.0 Framework. U can override it:
<membership
defaultProvider="provider name"
userIsOnlineTimeWindow="number of minutes"
hashAlgorithmType="SHA1">
<providers>...</providers>
</membership>
You can specify the greatest SHA your .NET version supports, for .NET 4 and latest is SHA512, but the default value must be ok.
To add yours you can read here (it is just a .dll to be configured in machine.config or possibly also in web.config, if u don't want to use it globally):
https://msdn.microsoft.com/en-us/library/693aff9y.aspx
Use Membership.Validate to validate the user at log-on.
If you use the new MVC thing that came 2013 there is UserManager u simply implement your User that holds the email, that's all, it must be IUser.
There is a method UserManager.CreateUser(TUser user, string password)