
ส่วน MD5 ผมจะชอบเขัยนเข้ารหัส Login มากว่า
ยกตัวอย่างนะคับ
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Configuration;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
using System.Security.Cryptography;
using System.Text;
namespace LoginMD5
{
public partial class _Default : System.Web.UI.Page
{
//Create a connection
private SqlConnection objConn = new SqlConnection( "Data Source=WATCHARA;Initial Catalog=Test;Persist Security Info=True;User ID=sa;Password=admin");
protected void Page_Load(object sender, EventArgs e)
{
}
/* Return types that are thrown when login is attempted */
public enum ValidationCode
{
LoginFailed = 1,
LoginSucceeded = 2,
ConnectionFailed = 3,
UnspecifiedFailure = 4,
LoginCreated = 5
}
public ValidationCode CreateNewLogin(string tableName, string strLogin, string strPassword, string loginColumn, string passColumn)
{
// Create a command object for the query
string strSQL = "INSERT INTO " + tableName + " (" + loginColumn + "," + passColumn + ") " + "VALUES(@Username, @Password)";
SqlCommand objCmd = new SqlCommand(strSQL, objConn);
//Create parameters
SqlParameter paramUsername;
paramUsername = new SqlParameter("@Username", SqlDbType.VarChar, 10);
paramUsername.Value = strLogin;
objCmd.Parameters.Add(paramUsername);
//Encrypt the password
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] hashedBytes;
UTF8Encoding encoder = new UTF8Encoding();
hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(strPassword));
SqlParameter paramPwd = new SqlParameter("@Password", SqlDbType.Binary, 16);
paramPwd.Value = hashedBytes;
objCmd.Parameters.Add(paramPwd);
//Insert the record into the database
try
{
objConn.Open();
objCmd.ExecuteNonQuery();
return ValidationCode.LoginCreated;
}
catch
{
return ValidationCode.ConnectionFailed;
}
finally
{
objConn.Close();
}
}
//Validating a Login
//Returns a validation code based on the control's set login info
public ValidationCode ValidateLogin(string tableName, string strLogin, string strPassword, string loginColumn, string passColumn)
{
try
{
string strSQL = "SELECT COUNT(*) FROM " + tableName + " WHERE " + loginColumn + "
=@Username AND " + passColumn + "
=@Password;";
SqlCommand objCmd = new SqlCommand(strSQL, objConn);
//Create the parameters
SqlParameter paramUsername;
paramUsername = new SqlParameter("@Username", SqlDbType.VarChar, 25);
paramUsername.Value = strLogin;
objCmd.Parameters.Add(paramUsername);
//Hash the password
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
byte[] hashedDataBytes;
UTF8Encoding encoder = new UTF8Encoding();
hashedDataBytes = md5Hasher.ComputeHash(encoder.GetBytes(strPassword));
//Execute the parameterized query
SqlParameter paramPwd;
paramPwd = new SqlParameter("@Password", SqlDbType.Binary, 16);
paramPwd.Value = hashedDataBytes;
objCmd.Parameters.Add(paramPwd);
//The results of the count will be held here
int iResults;
try
{
objConn.Open();
//We use execute scalar, since we only need one cell
iResults = Convert.ToInt32(objCmd.ExecuteScalar().ToString());
}
catch
//Connection failure (most likely, though
//you can handle this exception however)
{
return ValidationCode.ConnectionFailed;
}
finally
{
objConn.Close();
}
if (iResults == 1)
{
Response.Write("LoginSucceeded!!");
return ValidationCode.LoginSucceeded;
}
else
{
Response.Write("LoginFailed!!");
return ValidationCode.LoginFailed;
}
}
catch
{
return ValidationCode.UnspecifiedFailure;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string Username = txtUSer.Text;
string Pass = txtPass.Text;
string LoginColumn = "Login";
string PassColumn = "Password";
string TableName = "tblLogins";
CreateNewLogin(TableName, Username, Pass, LoginColumn, PassColumn);
txtUSer.Text = "";
txtPass.Text = "";
}
protected void btnLogin_Click(object sender, EventArgs e)
{
string Username = txtUSer.Text;
string Pass = txtPass.Text;
string LoginColumn = "Login";
string PassColumn = "Password";
string TableName = "tblLogins";
ValidateLogin(TableName, Username, Pass, LoginColumn, PassColumn);
txtUSer.Text = "";
txtPass.Text = "";
}
}
}

ลองดูนะคับ... เอาใจช่วยคับ อิ อิ