ผู้เขียน หัวข้อ: ขอความช่วยเหลือหน่อยครับ เรื่องการเข้ารหัสและถอดรหัส ASP.NET C#  (อ่าน 872 ครั้ง)

0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

ออฟไลน์ mintzaaclub

  • << น้องใหม่ >>
  • **
  • กระทู้: 5
  • ความมีน้ำใจ: +0/-0
อยากทราบการเข้ารหัส  และถอดรหัส   ถ้าผมต้องการนำข้อความที่พิมพ์ลงใน textbox แล้ว นำมาเข้ารหัส ก่อนลง DATABASE    และเมื่อต้องการเรียกดู ก็ถอดรหัสที่เคยเก็บออกมาใช้ มีตัวอย่างให้ดูจะเป็นกรุณาอย่างมากครับ ขอบคุณครับ

ออฟไลน์ Admin

  • << ผู้บัญชาการบอร์ด >>
  • Administrator
  • << Hero Member >>
  • *****
  • กระทู้: 2,666
  • ความมีน้ำใจ: +2657/-0
  • เพศ: ชาย
  • Developer ขาโหด..!!
    • www.rockdevper.com
    • อีเมล์
          ;D ;D  จริงๆ เข้าเข้ารหัสหรือ Encrypt มีหลายแบบคับ...
อ่านจากบทความนี้ก็ได้คับ
https://www.rockdevper.com/webboard/index.php?topic=137.msg393#msg393
 
แต่ผมชอบใช้ MD5 คับ.....
ว่าแล้วก็ขอเกาเบาๆ สะหน่อย....   
ตามนี้เลยคับ Function Encrypt & Decrypt
 

    Dim key() As Byte = {1, 50, 80, 111, 4, 255, 18, 217}
    Dim iv() As Byte = {12, 240, 193, 38, 193, 2, 58, 19}
 
 
    ' Decrypt the byte array.
    Private Function Decrypt(ByVal CypherText As String) As String
        Dim Crypto As New DESCryptoServiceProvider
        ' Create a memory stream to the passed buffer.
        Dim CypherBytes As Byte() = Convert.FromBase64String(CypherText)
        Dim ms As New MemoryStream(CypherBytes)
        ' Create a CryptoStream using the memory stream and the
        ' CSP DES key.
        Dim encStream As New CryptoStream(ms, Crypto.CreateDecryptor(key, iv), CryptoStreamMode.Read)
        ' Create a StreamReader for reading the stream.
        Dim sr As New StreamReader(encStream)
        ' Read the stream as a string.
        Dim val As String = sr.ReadLine()
        ' Close the streams.
        sr.Close()
        encStream.Close()
        ms.Close()
        Return val
    End Function 'Decrypt
 
 
 
    ' Encrypt the string.
    Private Function Encrypt(ByVal PlainText As String) As String
        ' Create a memory stream.
        Dim Crypto As New DESCryptoServiceProvider
        Dim ms As New MemoryStream
        ' Create a CryptoStream using the memory stream and the
        ' CSP DES key. 
        Dim encStream As New CryptoStream(ms, Crypto.CreateEncryptor(key, iv), CryptoStreamMode.Write)
        ' Create a StreamWriter to write a string
        ' to the stream.
        Dim sw As New StreamWriter(encStream)
        ' Write the plaintext to the stream.
        sw.WriteLine(PlainText)
        ' Close the StreamWriter and CryptoStream.
        sw.Close()
        encStream.Close()
        ' Get an array of bytes that represents
        ' the memory stream.
        Dim buffer As Byte() = ms.ToArray()
        ' Close the memory stream.
        ms.Close()
        ' Return the encrypted byte array.
        Return Convert.ToBase64String(buffer)
    End Function 'Encrypt
 
 
วิธีใช้ Decrypt ก็แบบนี้คับ...
    Private Sub DecryptConfig_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DecryptConfig.Click
        txtOutPut.Text = Decrypt(txtinPut.Text.Trim()).ToString()
    End Sub
 
วิธีใช้ Encrypt ก็แบบนี้คับ...
    Private Sub EncryptConfig_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EncryptConfig.Click
        txtOutPut.Text = Encrypt(txtinPut.Text.Trim()).ToString()
    End Sub
« แก้ไขครั้งสุดท้าย: เมษายน 06, 2010, 01:25:54 AM โดย admin »

ออฟไลน์ Admin

  • << ผู้บัญชาการบอร์ด >>
  • Administrator
  • << Hero Member >>
  • *****
  • กระทู้: 2,666
  • ความมีน้ำใจ: +2657/-0
  • เพศ: ชาย
  • Developer ขาโหด..!!
    • www.rockdevper.com
    • อีเมล์
        ;D ;D  ส่วน 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 = "";
        }
    }
}

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

ออฟไลน์ mintzaaclub

  • << น้องใหม่ >>
  • **
  • กระทู้: 5
  • ความมีน้ำใจ: +0/-0
ขอบคุณความรุ้ดีๆมากครับ เดวจะพยายามลองดู