Thứ Sáu

Tạo mã bâm một chiều

Tạo mã bâm là cách tạo mã một chiều(Hash), nhận một giá trị đầu vào và chuyển nó thành một giá trị khác. Các giá trị này sau khi tạo ra không thể chuyển được về giá trị nguồn. Giải thuật tạo mã bâm có đặc điểm sau:
- Các giá trị vào khác nhau, nhưng có cùng thuật toán bâm sẻ tạo ra giá trị có cùng kích thước.
- Các giá trị vào giống nhau, nhưng có thuật toán bâm khác nhau sẻ tạo ra giá trị có kích thước khác nhau.
- Giá trị tạo ra sẻ phức tạp như nhau dù giá trị đầu vào đơn giản đến đâu(một khoảng trắng, một kí tự…).
Ứng dụng phổ biến tạo mã bâm là dùng trong quản lý mật khẩu của tài khoản. Mật khẩu sẻ được tạo mã bâm và lưu vào DB, khi người dùng đăng nhập thì mật khẩu sẻ được tạo mã bâm và so sánh vơi mã bâm lưu dưới DB. Trong trường hợp này dù là người quản trị cũng không biết được mật khẩu của người dùng. Do đó tài khoản được tạo mã bâm có bảo mật rất cao. Sau đây là một số đoạn code tạo mã bâm đơn giản.
Tạo mã bâm bằng thuật toán SHA1
 public string EncodeToSHA1(string value)
   {
       UnicodeEncoding uEncode = new UnicodeEncoding();
       byte[] byteValue = uEncode.GetBytes(value);
       SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider();
       byte[] hash = sha1.ComputeHash(byteValue);
       return Convert.ToBase64String(hash);
   }
Tạo mã bâm bằng thuật toán SHA256
public string EncodeToSHA256(string value)
   {
       UnicodeEncoding uEncode = new UnicodeEncoding();
       byte[] byteValue = uEncode.GetBytes(value);
       SHA256CryptoServiceProvider sha1 = new SHA256CryptoServiceProvider();
       byte[] hash = sha1.ComputeHash(byteValue);
       return Convert.ToBase64String(hash);
   }
Tạo mã bâm bằng thuật toán SHA384
public string EncodeToSHA384(string value)
   {
       UnicodeEncoding uEncode = new UnicodeEncoding();
       byte[] byteValue = uEncode.GetBytes(value);
       SHA384CryptoServiceProvider sha1 = new SHA384CryptoServiceProvider();
       byte[] hash = sha1.ComputeHash(byteValue);
       return Convert.ToBase64String(hash);
   }
Tạo mã bâm bằng thuật toán SHA512
  public string EncodeToSha512(string value)
   {
       UnicodeEncoding uEncode = new UnicodeEncoding();
       byte[] byteValue = uEncode.GetBytes(value);
       SHA512CryptoServiceProvider sha1 = new SHA512CryptoServiceProvider();
       byte[] hash = sha1.ComputeHash(byteValue);
       return Convert.ToBase64String(hash);
   }
Tạo mã bâm bằng thuật toán MD5
  public string EncodeToMD5(string value)
    {
       UnicodeEncoding uEncode = new UnicodeEncoding();
       byte[] byteValue = uEncode.GetBytes(value);
       MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
       byte[] hash = md5.ComputeHash(byteValue);
       return Convert.ToBase64String(hash);
   }
Mặc dù các thuật toán tạo mã bâm này mang tính bảo mật rất cao và không thể giải mã được. Nhưng trên thực tế thuật toán SHA1 đã được giải mã bởi một nhóm nhà nghiên cứu tại một trường ĐH ở Quản Đông- Trung Quốc.

0 nhận xét:

Đăng nhận xét

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Blogger Templates