Updated: November 2007
Produces a hash password suitable for storing in a configuration file based on the specified password and hash algorithm.
Public Shared Function HashPasswordForStoringInConfigFile ( _ password As String, _ passwordFormat As String _ ) As String
Dim password As String Dim passwordFormat As String Dim returnValue As String returnValue = FormsAuthentication.HashPasswordForStoringInConfigFile(password, _ passwordFormat)
public static string HashPasswordForStoringInConfigFile( string password, string passwordFormat )
public: static String^ HashPasswordForStoringInConfigFile( String^ password, String^ passwordFormat )
public static String HashPasswordForStoringInConfigFile( String password, String passwordFormat )
public static function HashPasswordForStoringInConfigFile( password : String, passwordFormat : String ) : String
The password to hash.
The hash algorithm to use. passwordFormat is a String that represents one of the FormsAuthPasswordFormat enumeration values.
The hashed password.
password is nullNothingnullptra null reference (Nothing in Visual Basic)
-or-
passwordFormat is nullNothingnullptra null reference (Nothing in Visual Basic).
passwordFormat is not a valid FormsAuthPasswordFormat value.
The HashPasswordForStoringInConfigFile method creates a hashed password value that can be used when storing forms-authentication credentials in the configuration file for an application.
Authentication credentials stored in the configuration file for an application are used by the Authenticate method to verify passwords for users of an application. Alternatively, you can use ASP.NET membership to store user credentials. For more information, see Managing Users by Using Membership.
The following code example takes a user name, password, and hash type and displays the credentials section of the configuration that includes the user definition and hashed password.
This example contains a text box that accepts user input, which is a potential security threat. By default, ASP.NET Web pages validate that user input does not include script or HTML elements. For more information, see Script Exploits Overview.
<%@ Page Language="VB" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html > <head> <title>ASP.NET Example</title> <script runat="server"> Sub Cancel_Click(sender As Object, e As EventArgs) userName.Text = "" password.Text = "" repeatPassword.Text = "" result.Text = "" End Sub Sub HashPassword_Click(sender As Object, e As EventArgs) If Page.IsValid Then Dim hashMethod As String = "" If md5.Checked Then hashMethod = "MD5" Else hashMethod = "SHA1" End If Dim hashedPassword As String = _ FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text, hashMethod) result.Text = "<credentials passwordFormat=""" & hashMethod & _ """><br />" & " <user name=""" & Server.HtmlEncode(userName.Text) & """ password=""" & _ hashedPassword & """ /><br />" & "</credentials>" Else result.Text = "There was an error on the page." End If End Sub </script> </head> <body> <form id="form1" runat="server"> <p>This form displays the results of the FormsAuthentication.HashPasswordForStoringInConfigFile method.<br />The user name and hashed password can be stored in a <credentials> node in the Web.config file.</p> <table cellpadding="2"> <tbody> <tr> <td>New User Name:</td> <td><asp:TextBox id="userName" runat="server" /></td> <td><asp:RequiredFieldValidator id="userNameRequiredValidator" runat="server" ErrorMessage="User name required" ControlToValidate="userName" /></td> </tr> <tr> <td>Password: </td> <td><asp:TextBox id="password" runat="server" TextMode="Password" /></td> <td><asp:RequiredFieldValidator id="passwordRequiredValidator" runat="server" ErrorMessage="Password required" ControlToValidate="password" /></td> </tr> <tr> <td>Repeat Password: </td> <td><asp:TextBox id="repeatPassword" runat="server" TextMode="Password" /></td> <td><asp:RequiredFieldValidator id="repeatPasswordRequiredValidator" runat="server" ErrorMessage="Password confirmation required" ControlToValidate="repeatPassword" /> <asp:CompareValidator id="passwordCompareValidator" runat="server" ErrorMessage="Password does not match" ControlToValidate="repeatPassword" ControlToCompare="password" /></td> </tr> <tr> <td>Hash function:</td> <td align="center"> <asp:RadioButton id="sha1" runat="server" GroupName="HashType" Text="SHA1" /> <asp:RadioButton id="md5" runat="server" GroupName="HashType" Text="MD5" /> </td> </tr> <tr> <td align="center" colspan="2"> <asp:Button id="hashPassword" onclick="HashPassword_Click" runat="server" Text="Hash Password" /> <asp:Button id="cancel" onclick="Cancel_Click" runat="server" Text="Cancel" CausesValidation="false" /> </td> </tr> </tbody> </table> <pre><asp:Label id="result" runat="server"></asp:Label></pre> </form> </body> </html>
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html > <head> <title>ASP.NET Example</title> <script runat="server"> void Cancel_Click(object sender, EventArgs e) { userName.Text = ""; password.Text = ""; repeatPassword.Text = ""; result.Text = ""; } void HashPassword_Click(object sender, EventArgs e) { if (Page.IsValid) { string hashMethod = ""; if (md5.Checked) { hashMethod = "MD5"; } else { hashMethod = "SHA1"; } string hashedPassword = FormsAuthentication.HashPasswordForStoringInConfigFile(password.Text, hashMethod); result.Text = "<credentials passwordFormat=\"" + hashMethod +"\"><br />" + " <user name=\"" + Server.HtmlEncode(userName.Text) + "\" password=\"" + hashedPassword + "\" /><br />" + "</credentials>"; } else { result.Text = "There was an error on the page."; } } </script> </head> <body> <form id="form1" runat="server"> <p>This form displays the results of the FormsAuthentication.HashPasswordForStoringInConfigFile method.<br />The user name and hashed password can be stored in a <credentials> node in the Web.config file.</p> <table cellpadding="2"> <tbody> <tr> <td>New User Name:</td> <td><asp:TextBox id="userName" runat="server" /></td> <td><asp:RequiredFieldValidator id="userNameRequiredValidator" runat="server" ErrorMessage="User name required" ControlToValidate="userName" /></td> </tr> <tr> <td>Password: </td> <td><asp:TextBox id="password" runat="server" TextMode="Password" /></td> <td><asp:RequiredFieldValidator id="passwordRequiredValidator" runat="server" ErrorMessage="Password required" ControlToValidate="password" /></td> </tr> <tr> <td>Repeat Password: </td> <td><asp:TextBox id="repeatPassword" runat="server" TextMode="Password" /></td> <td><asp:RequiredFieldValidator id="repeatPasswordRequiredValidator" runat="server" ErrorMessage="Password confirmation required" ControlToValidate="repeatPassword" /> <asp:CompareValidator id="passwordCompareValidator" runat="server" ErrorMessage="Password does not match" ControlToValidate="repeatPassword" ControlToCompare="password" /></td> </tr> <tr> <td>Hash function:</td> <td align="center"> <asp:RadioButton id="sha1" runat="server" GroupName="HashType" Text="SHA1" /> <asp:RadioButton id="md5" runat="server" GroupName="HashType" Text="MD5" /> </td> </tr> <tr> <td align="center" colspan="2"> <asp:Button id="hashPassword" onclick="HashPassword_Click" runat="server" Text="Hash Password" /> <asp:Button id="cancel" onclick="Cancel_Click" runat="server" Text="Cancel" CausesValidation="false" /> </td> </tr> </tbody> </table> <pre><asp:Label id="result" runat="server"></asp:Label></pre> </form> </body> </html>
Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98