Trang 1 trên tổng số 3 123 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 24 kết quả

Đề tài: Mã hóa Password saukhi đưa vào CSDL

  1. #1
    Ngày gia nhập
    02 2007
    Nơi ở
    Thủ Đức - TPHCM
    Bài viết
    49

    Angry Mã hóa Password saukhi đưa vào CSDL

    Mình muốn mã hóa password khi đưa vào CSDL thì dùng câu lệnh SQL như thế nào ,và khi truy xuất ngược ra lại thì giải mã như thế nào , mình đang viết chương trình bằng C# + SQL server 2000.

  2. #2
    Ngày gia nhập
    10 2007
    Bài viết
    10

    class
    Visual C# Code:
    1. using System;
    2. using System.Security;
    3. using System.Security.Cryptography;
    4. using System.Text;
    5.  
    6. namespace QTC.LIB.Security
    7. {
    8.     public class MD5 : MsgDigest
    9.     {
    10.         // Encrypt bytes to bytes
    11.         public static byte[] EncryptionToBytes(byte[] bSource)
    12.         {
    13.             return new MD5CryptoServiceProvider().ComputeHash(bSource);
    14.         }
    15.        
    16.         // Encrypt string to bytes
    17.         public byte[] EncryptionToBytes(string strSource)
    18.         {
    19.             return EncryptionToBytes(ASCIIEncoding.ASCII.GetBytes(strSource));
    20.         }
    21.        
    22.         // Encrypt bytes to string
    23.         public static string EncryptionToString(byte[] bSource)
    24.         {
    25.             return ByteArrayToString(EncryptionToBytes(bSource));
    26.         }
    27.        
    28.         // Encrypt string to string
    29.         public static string EncryptionToString(string strSource)
    30.         {
    31.             return EncryptionToString(ASCIIEncoding.ASCII.GetBytes(strSource));
    32.         }
    33.        
    34.         // Compare to hash - any match???
    35.         public static bool CompareHash(byte[] bSource, byte[] bDest)
    36.         {
    37.             // Defaul it's not match
    38.             bool blnEqual = false;
    39.             // Math if same length
    40.             if (bSource.Length == bDest.Length) {
    41.                 int i = 0;
    42.                 while ((i < bSource.Length) && (bSource[i] == bDest[i])) {
    43.                     i += 1;
    44.                 }
    45.                 // And match if same value
    46.                 if (i == bSource.Length) {
    47.                     blnEqual = true;
    48.                 }
    49.             }
    50.             return blnEqual;
    51.         }
    52.        
    53.         // Compare to hash - any match???
    54.         public static bool CompareHash(byte[] bSource, string strDest)
    55.         {
    56.             return CompareHash(bSource, ASCIIEncoding.ASCII.GetBytes(strDest));
    57.         }
    58.        
    59.         // Compare to hash - any match???
    60.         public static bool CompareHash(string strSource, string strDest)
    61.         {
    62.             return CompareHash(ASCIIEncoding.ASCII.GetBytes(strSource), ASCIIEncoding.ASCII.GetBytes(strDest));
    63.         }
    64.        
    65.         // Compare to hash - any match???
    66.         public static bool CompareHash(string strSource, byte[] bDest)
    67.         {
    68.             return CompareHash(ASCIIEncoding.ASCII.GetBytes(strSource), bDest);
    69.         }
    70.        
    71.         // Convert byte array to string
    72.         public static string ByteArrayToString(byte[] arrInput)
    73.         {
    74.             int i;
    75.             StringBuilder sOutput = new StringBuilder(arrInput.Length);
    76.             for (i = 0; i <= arrInput.Length - 1; i++) {
    77.                 sOutput.Append(arrInput[i].ToString("X2"));
    78.             }
    79.             return sOutput.ToString();
    80.         }
    81.     }
    82. }
    ===============
    code trong frmLogin.cs

    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Text;
    7. using System.Windows.Forms;
    8. using System.Data.SqlClient;
    9. using Qtc.Modules.Core.Data;
    10. using Qtc.Modules.Core.UI;
    11. using QTC.LIB.FormUI;
    12. using QTC.LIB.ConnectDB;
    13. using System.Security.Principal;
    14. using System.Threading;
    15. using Qtc.Qlda.Modules.BusinessModule;
    16. using QTC.LIB.Security;
    17.  
    18. namespace Qtc.Qlda
    19. {
    20.     public partial class FrmLogin : Form
    21.     {
    22.         FrmMain frmMain=null;      
    23.  
    24.         public FrmLogin(FrmMain frmMain)
    25.         {
    26.             InitializeComponent();
    27.             this.frmMain = frmMain;
    28.         }
    29.  
    30.         private void button1_Click(object sender, EventArgs e)
    31.         {
    32.             bool loginFlag = User.ValidateLogin(txtusername.Text, MD5.EncryptionToString(txtpassword.Text));
    33.            
    34.             if (loginFlag == true)
    35.             {                
    36.                 //frmMain.Login();
    37.                 Close();
    38.             }
    39.             else
    40.             {
    41.                 QTC.LIB.FormUI.ExMessageBox.Show(
    42.                                      " Lỗi đăng nhập \n\n Vui lòng kiểm tra lại tên người dùng và mật khẩu.",
    43.                                      " Thông báo");                                    
    44.             }
    45.         }
    46.        
    47.         private void button2_Click(object sender, EventArgs e)
    48.         {
    49.             Close();
    50.         }                
    51.     }
    52. }

    bỏ code vào tag code cho người khác dễ đọc bạn nhé!
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 23-09-2008 lúc 11:01 AM.

  3. #3
    Ngày gia nhập
    10 2007
    Bài viết
    10

    và khi truy xuất ngược ra lại thì giải mã như thế nào??? cái này chưa làm được...mới alf vậy được thui

  4. #4
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    2 cậu: 1 cậu hỏi - 1 cậu code demo <---- cả 2 đều chuối củ

    Hướng dẫn cho 2 bạn logic cơ bản về bảo mật password nhé: <thường thì người ta dùng cái này>
    + Lấy password từ user khi đăng kí rồi mã hóa 1 chiều (SHA-1, MD5...)
    + Update cái hash của password vào db
    + Khi user login: nhập pass vào rồi mã hóa nó 1 chiều như trên rồi so sánh với cái pass của user đã mã hóa khi đăng kí, nếu khớp thì OK, nếu không thì té.

    Đó là với quy tắc bảo mật password sử dụng kiểu mã hóa 1 chiều đảm bào không bị decode vì 1 chiều thì không giải mã được <*****, dictionary, brute-force.....thì ok , nhưng tỉ lệ không cao, phụ thuộc luck + fortune>

    Còn nếu không muốn sử dụng mã hóa 1 chiều thì có thể tự tạo ra các mã hóa riêng để sử dụng <có thể 1 chiều hoặc 2 chiều>
    Nếu 2 chiều:
    + User nhập pass vào khi đăng kí, mã hóa -> ném vào db
    + User nhập pass khi login, lấy cái pass của user khi đăng kí giải mã rồi so sánh với cái khi login, khớp thì OK, ngược lại thì té.
    Tuy nhiên, chả mấy ai làm cái này vì bảo mật kém, dễ bị chôm code, lộ xừ pass của user, mất thời gian code thêm mã hóa + giải mã...đau đầu mà chả hiệu quả.
    None!

  5. #5
    Ngày gia nhập
    02 2007
    Nơi ở
    Thủ Đức - TPHCM
    Bài viết
    49

    bạn nào có code ko cho mình mượn tham khảo đi , đúng là mình củ chuối thật
    củ chuối mới hỏi vậy chứ

  6. #6
    Ngày gia nhập
    02 2008
    Bài viết
    66

    Mặc định Mã hóa Password saukhi đưa vào CSDL

    Vậy mà mình tưởng bạn muốn lưu trữ pass làm lần trước không trả lời.
    Nếu chính xác bạn muốn kiểm tra pass thì như anh Xcross87 đã nói ta sử dụng SHA-1 hoặc MD5 nhưng hiện hai kĩ thuật này hiện không còn an toàn nữa sau khi hai nhà ... phát hiện ra ...
    Vì vậy cần sử dụng SHA-2 (224,256,448,512). Nó hiện vẫn an toàn vì chiều ngược chưa có phương pháp để giải.
    Mà tài mã hóa một chiều muốn giải thì làm sao nổi. SHA-2 chỉ mất có cỡ 4000 năm trên một máy tính thường thôi.
    Đưới đây là code của SHA-2 code C.
    SHA-2

  7. #7
    Ngày gia nhập
    02 2008
    Bài viết
    113

    Trích dẫn Nguyên bản được gửi bởi Xcross87 Xem bài viết

    + Lấy password từ user khi đăng kí rồi mã hóa 1 chiều (SHA-1, MD5...)

    .
    SHA CHƯA THỬ, MD5 THÌ 5s
    Còn đây điếu thuốc cháy dở dang .
    Châm lên ta đốt mảnh đời tàn .
    Làn khói ngẩn ngơ theo dòng nhạc .
    Thuốc tàn mà... code ... mãi chưa xong .
    http://thanlong.govtc.com

  8. #8
    Ngày gia nhập
    06 2007
    Nơi ở
    TP.HCM
    Bài viết
    113

    Ai nói MD5 thì sẽ bị giải mã! Có thể! Nhưng nếu biến hóa nó chút xíu thì thằng nào rảnh ngồi giải mã! MD5 3 lớp 4 lớp buồn thì lên n lớp đố thằng nào mò được.

    cho ví dụ về cách biến đổi MD5 tớ thường xài nè.
    Visual C# Code:
    1. public static String ChangeMD5(String strSource)
    2. {
    3. System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
    4.  
    5. byte[] bs = System.Text.Encoding.UTF8.GetBytes(strSource);
    6. bs = x.ComputeHash(bs);
    7. System.Text.StringBuilder s = new System.Text.StringBuilder();
    8. foreach (byte b in bs)
    9. {
    10. s.Append(b.ToString("x2").ToLower());
    11. }
    12.  
    13. return s.ToString();
    14. }

    Còn muốn chơi kiểu decode lại thì tham khảo bài viết này:


    Gác Kiếm

  9. #9
    Ngày gia nhập
    10 2007
    Bài viết
    4

    uh tui cũng mơi học C# cho nên thấy bạn nào nói cũng hay.nhưng tui thấy mọi người hay dùng MD5

  10. #10
    Ngày gia nhập
    08 2008
    Bài viết
    1

    hic , đúng topic cần đây rồi .

    Mình đang tìm hiểu về cách mã hóa trong SQL .
    Khi tạo tài khoản , mình muốn trường password được mã hóa .
    Và khi login có thể lấy đúng string đã tạo là okie (viết hàm giải mã)
    --------------

    Ai có thể hướng dẫn cách làm ko ? Cho mình xin source code đoạn đó về ngâm cứu cũng được

Các đề tài tương tự

  1. Mã hóa md5 password trong C# CSDL SQL sever
    Gửi bởi mrhungpham trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 05-12-2015, 11:00 PM
  2. cách mã hóa dữ liệu password để lưu vào CSDL?
    Gửi bởi tuanngocpt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 21-02-2011, 12:08 PM
  3. Mã Hóa password ASP.Net (C#)
    Gửi bởi chungnam098 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 21-03-2010, 08:36 PM
  4. Mã Hóa Password tại textBox thành các dấu ***?
    Gửi bởi robocon1183 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 4
    Bài viết cuối: 26-08-2009, 11:09 AM
  5. Mã hóa password để lưu trong CSDL như thế nào?
    Gửi bởi langtugacon trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 9
    Bài viết cuối: 29-02-2008, 11:04 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn