Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: tạo password chương trình rồi lưu lại trong csdl

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

    Mặc định tạo password chương trình rồi lưu lại trong csdl

    Mình đang lập trình C# trên nền VS 2500 mà đang gặp vấn đề về việc tạo password chương trình .Đó là Mình muốn tạo pasword cho chương trình của mình, sau đó lưu nó lại trong csdl rồi chạy setup cài đặt vào máy (hdh Win XP) tiếp đó chạy chương trình nhập pasword cho lần đầu tiên rồi những lần sau đó không cần đăng nhập nữa.
    Hiện tại mình không biết viết thế nào.Mong được sự giúp đỡ của mọi người ,mình cảm ơn nhiều lắm.

    --------------------------------------------------
    Đề nghị đọc rule của box Project trước khi post bài ! nhc1987.
    Đã được chỉnh sửa lần cuối bởi nhc1987 : 10-12-2007 lúc 05:55 PM.

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

    Có lẽ tôi chưa rõ câu hỏi của bạn hoặc nó quá basic,vì chỉ cần update kiến thức về 1 trong các + sau:
    + Truy xuất DB căn bản
    + Truy xuất file căn bản
    + Truy xuất registry căn bản
    Là giải quyết đc yêu cầu của bạn.

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

    Cảm ơn Pham Tien Sinh.nhưng mình mún hỏi là khi tạo 1 password cho chương trình xong thì làm thế nào để lưu nó lại mà khi ta đăng nhập sử dụng chỉ lần đầu tiên thui.những lần khác lấy đó mà chạy không cần phải nhập pass nữa. Bạn có thể nói rõ hơn được ko hay nếu có tài liệu nào thì send cho mình với.

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    Câu trả lời của phamtiensinh rõ ràng vậy mà

    + Truy xuất DB căn bản
    + Truy xuất file căn bản
    + Truy xuất registry căn bản
    Nếu là tui thì tui chọn lưu trong file (tất nhiên là sau khi RSA-128 )
    Keep moving forward!

    ... Retired ...

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

    Thường những yêu cầu như bạn nói thì pass được lưu xuống file. Và tốt nhất bạn nên lưu dưới file text. Chương trình của bạn khởi động nó sẽ gọi file "có lưu pass không?" lên để kiểm tra, nếu lưu thì nó gọi file "user và pass" lên để đăng nhập đúng với quyền truy cập. File text bạn tạo ra đuôi có thể là .txt, .doc hay bất kỳ tùy bạn đặt ví dụ LOGIN.sunflower chẳng hạn.

    Trong lúc sử dụng bạn không muốn ghi nhớ nữa thì bạn thực hiện logout hoặc cơ chế nào đó để xóa file lưu pass này. Và nhớ là đổi luôn cái kiểm tra lưu pass là không lưu để lần sau khi chương trình khởi động nó đòi bạn nhập user và pass.

    Như PTS chỉ cho bạn đó, cần tìm hiểu những cái như vậy. Nhưng với yêu cầu của bạn chỉ cần tìm hiểu file là đủ. như (FileStream, Stream, StreamWrite, StreamReader ...) vào MSDN gỏ từ khóa nó ra hàng đóng source và ex,

    Gác Kiếm

  6. #6
    Ngày gia nhập
    11 2007
    Bài viết
    40

    Mặc định tạo password chương trình rồi lưu lại trong csdl

    Một số hiểu biết về mã hóa, sử dụng trong .NET
    Trong các thuật toán mã hóa đối xứng, thì thường dùng một private key (khóa riêng) để mã hóa và giải mã dữ liệu.
    Cùng với private key thì để tăng độ bảo mật, 1 Initialization Vector (IV) được dùng như một giá trị seed (cái này có thể hiểu như là lõi).
    Như vậy, có thể hiểu được rằng khi cài đặt mã hóa trong .NET thì nên dùng 2 field là: private key và IV.

    Okei, bây giờ ta qua tiếp phần cách thức sử dụng nó như thế nào. Nhưng trước hết phải làm quen với mô hình mã hóa có thể dùng trong .NET

    Ở .NET, có thể hình dung được mô hình như sau
    Code:
    -------------------							     -----------------------										
    |	Dữ liệu text  |								|	Dữ liệu text       |	
    ---------------------							    -----------------------
    	     |										        ^
    	     V										        |
    -----------------------							    -----------------------
    | 	CryptoStream  |							     |       CryptoStream    |
    -----------------------							    -----------------------
                |										        ^
    	    V											|
    -----------------------			 -------------------		-----------------------
    |  Underlaying Streams |-------->    |  Encrypted File |------>    |  Underlaying Streams | 
    -----------------------			 -------------------		-----------------------
    (FileStream, memoryStream ...)						    (FileStream, memoryStream ...)
    Như trong mô hình trên thì đầu vào sẽ là dữ liệu text, được đưa vào CryptoStream, thực hiện mã hóa trong đó và ghi xuống underlaying Stream (như FileStream, MemoryStream ...). Sau đó thì lưu chúng vào File.

    Theo như bài của bạn thì theo mình nghĩ chỉ cần lưu vào trong 1 file đặt tên là login.dat là được (đại loại là thế ). Còn việc kiểm tra login lần đầu hay không thì đặt cho nó 1 cái cờ trong File, xác định là đã login lần nào hay chưa? nếu chưa thì login, và bật cờ lên. Lưu thông tin đó lại vào File.

    Trưa nay rảnh nếu bạn cần tôi sẽ post cái code tôi đã từng làm cho bạn tham khảo.
    Đã được chỉnh sửa lần cuối bởi hung.tran : 11-12-2007 lúc 08:24 AM.

  7. #7
    Ngày gia nhập
    11 2007
    Bài viết
    40

    Mặc định Mã chương trình demo

    PHP Code:
    using System;
    using System.Collections.Generic;
    using System.Text;

    using System.IO// Dung cho File
    using System.Security.Cryptography// Dung cho ma hoa

    namespace Mahoa
    {
        class 
    Cryption
        
    {
            public static 
    string DefaultKey "Ma1@hOa5"// Khoa mac dinh, cai nay tuy ban dat nhu the nao cung dc
            
    public static byte[] salt = new byte[] { 0x490x760x610x6e0x200x4d0x650x640x760x650x640x650x76 }; // Dùng fuc vu cho ma hoa
            // ----------------------------Cac ham ma hoa---------------------------------
            
    public static byte[] Encrypt(byte[] clearDatabyte[] Keybyte[] IV)
            {            
                
    // Ma hoa dung thuat toan Rijndael duoc cai dat san trong .NET
                
    MemoryStream ms = new MemoryStream(); // Tao memorystream de chua du lieu duoc ma hoa
                
    Rijndael oRijndael Rijndael.Create(); // Tao mot instance cua thuat toan Rijndael
                
    oRijndael.Key Key;
                
    oRijndael.IV IV;
                
                
    // Thuc hien ma hoa, ghi vao memorystream
                
    CryptoStream cs = new CryptoStream(msoRijndael.CreateEncryptor(), CryptoStreamMode.Write);
                
                
    // Ghi ra chuoi Byte
                
    cs.Write(clearData0clearData.Length);
                
    cs.Close();
                
                
    byte[] encryptedData ms.ToArray();
                return 
    encryptedData;
            }
            
    // Thuc hien ma hoa chuoi string dua vao va tra ve 1 chuoi string 
            
    public static string Encrypt(string clearText)
            {
                
    // Chuyen chuoi string ra cac byte
                
    byte[] clearBytes System.Text.Encoding.Unicode.GetBytes(clearText);
                
    //Tao key
                
    PasswordDeriveBytes pdb = new PasswordDeriveBytes(DefaultKeysalt);
                
    // Thuc hien ma hoa, dung ham ma hoa cac bye tra ve cac byte da lam o tren
                
    byte[] encryptedData Encrypt(clearBytespdb.GetBytes(32), pdb.GetBytes(16));
                
    // Chuyen ve dang string, luc nay khoi doc duoc roi
                
    return Convert.ToBase64String(encryptedData);
            }

            
    //Ma hoa chuoi pass vao File
            
    public static void Encrypt(string fileOutstring password)
            {
                
    // Chuyen ra dang byte
                
    byte[] clearBytes System.Text.Encoding.Unicode.GetBytes(password);
                
    //Tao Filestream de chua du lieu dc ma hoa
                
    FileStream fsOut = new FileStream(fileOutFileMode.CreateFileAccess.Write);
                
    // Tao key
                
    PasswordDeriveBytes pdb = new PasswordDeriveBytes(DefaultKeysalt);
                
    Rijndael oRij Rijndael.Create();
                
    oRij.Key pdb.GetBytes(32);
                
    oRij.IV pdb.GetBytes(16);

                
    // Vua thuc hien ma hoa, vua ghi vao File
                
    CryptoStream cs = new CryptoStream(fsOutoRij.CreateEncryptor(), CryptoStreamMode.Write);            
                
    cs.Write(clearBytes0clearBytes.Length);            
                
                
    cs.Close();
                
    fsOut.Close();
            }        

            
    // ----------------------------Giai ma---------------------------------
            
    public static byte[] Decrypt(byte[] cipherDatabyte[] Keybyte[] IV)
            {            
                
    MemoryStream ms = new MemoryStream();            
                
    Rijndael oRij Rijndael.Create();
                
    oRij.Key Key;
                
    oRij.IV IV;

                
    CryptoStream cs = new CryptoStream(msoRij.CreateDecryptor(), CryptoStreamMode.Write);

                
    cs.Write(cipherData0cipherData.Length);
                
    cs.Close();

                
    byte[] decryptedData ms.ToArray();
                return 
    decryptedData;
            }                
            public static 
    byte[] Decrypt(byte[] cipherDatastring Password)
            {
                
    PasswordDeriveBytes pdb = new PasswordDeriveBytes(Passwordsalt);
                return 
    Decrypt(cipherDatapdb.GetBytes(32), pdb.GetBytes(16));
            }
            
    //Giai ma tu File
            
    public static string Decrypt(string fileIn)
            {   
                
    string data "";
                
    FileStream fsIn = new FileStream(fileInFileMode.OpenFileAccess.Read);
                
    long filelenght fsIn.Length;
                
    byte[] buffer = new byte[filelenght];
                
    int byteread;
                
    // Doc du lieu tu File
                
    do
                {
                    
    byteread fsIn.Read(buffer0buffer.Length);
                } while (
    byteread != 0);
                
    fsIn.Close();// Lam xong thi dong File
                // Thuc hien giai ma dong byte vua doc tu File ra
                
    byte[] ciphertext Decrypt(bufferDefaultKey);
                
    data System.Text.Encoding.Unicode.GetString(ciphertext);// Chuyen nguoc ve lai unicode

                
    return data;
            }
        }

    Code tham khảo. Mình gõ trong Notepadd++ nên chú thích không có gõ dấu được, thông cảm
    Đã được chỉnh sửa lần cuối bởi hung.tran : 11-12-2007 lúc 09:55 AM. Lý do: Đổi title

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

    Cho mình hỏi, nếu Password mình mã hóa xong và lưu dưới dạng *.txt hay định dạng nào khác, nhưng lỡ người ta mún phá CSDL pass của mình, người ta mở file này lên và thay đổi thông số nó đi thì làm thế nào ạh? có cách nào lưu CSDL về pass vào 1 chỗ nào ko ai sờ đến đc ko ?
    Mình mới ngâm cứu C#, chưa thông lắm, các pác giúp hộ ^^.

  9. #9
    Ngày gia nhập
    10 2007
    Nơi ở
    HCMUNS
    Bài viết
    459

    và lưu dưới dạng *.txt hay định dạng nào khác,
    Nên lưu với định dạng "lạ mắt" một chút . Tránh tò mò ấy mà.
    ta mún phá CSDL pass của mình, người ta mở file này lên và thay đổi thông số nó đi thì làm thế nào ạh?
    Thì lúc load lên, check file thấy bị hư thì bỏ qua. Yêu cầu nhập user + pass. Xong rồi lưu lại.

    có cách nào lưu CSDL về pass vào 1 chỗ nào ko ai sờ đến đc ko ?
    Nếu lưu chỗ người ta không sờ đến được thì kiếm chỗ nào kín kín mà lưu. System32 chẳng hạn. Set thêm hidden nữa
    Keep moving forward!

    ... Retired ...

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

    Trích dẫn Nguyên bản được gửi bởi nhc1987 Xem bài viết
    Thì lúc load lên, check file thấy bị hư thì bỏ qua. Yêu cầu nhập user + pass. Xong rồi lưu lại.
    làm vậy khác gì ko làm. kẻ lạ phá CSDL xong chạy chương trình của mình, chương trình mình check thấy CSDL hư, nó sẽ cho phép tự đặt user + pass mới và kẻ lạ sẽ ngang nhiên sử dụng chương trình của mình .

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. Mã hóa Password saukhi đưa vào CSDL
    Gửi bởi minhitcn2 trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 23
    Bài viết cuối: 01-07-2012, 02:49 PM
  3. 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
  4. Lập trình C++ | Tạo Password trong C++
    Gửi bởi iamvtn trong diễn đàn Thủ thuật, Tutorials và Mã nguồn C/C++/C++0x
    Trả lời: 16
    Bài viết cuối: 28-10-2010, 10:28 PM
  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