01/10/2018, 16:11
Mã hóa và giải mã một chuỗi trong mô hình 3 layers
Chào mọi người, em đang làm đồ án có liên quan tới mã hóa mà có phần không hiểu mong mọi người chỉ dẫn cho. Vd em có một bảng Account lưu các acc của user, khi em đăng ký một acc mới thì nó sẽ mã hóa password của mình rồi ghi xuống csdl, khi mình login thì nó sẽ lấy cái pass đó lên giải mã rồi mới so sánh với pass mình nhập từ bàn phím vào phải không ạ? Bài này nếu em làm mô hình 3 layers thì phần giải mã nên viết ở lớp nào ạ? Em cám ơn mọị người nhiều.
Bài liên quan
Hi Province.
Mình không rõ đồ án của bạn nhưng thường thì người ta sẽ thêm muối rồi băm cái pass với mộ số cái khác ra thành chuỗi băm. Sau đó khi login thì bạn cũng băm cái họ nhập vào tương tự để kiểm tra xem có khớp không.
P/S Quy tắc là người cung cấp dịch vụ không được biết mật khẩu người dùng.
Ngược lại bạn ạ. Thường họ sẽ mã hoá một chiều. Ưu xuống db. Sau đó khi login mình sẽ hash lại password đo r compare với đoạn hash trên db. Như vậy thì khi có lấy đc password hash người dùng cũng k thể đăng nhập được
Việc lưu mật khẩu sử dụng “băm” (hash) là một phương pháp mã hoá một chiều. Đặc tính của hàm băm (hash function):
Nguyên tắc của việc lưu mật khẩu là quản trị viên (administrator, không phải người lập trình ra trang web) dù có biết được toàn bộ database cũng không biết được mật khẩu người dùng. Như vậy, một hàm băm có thể dùng để xác thực phải đảm bảo thêm 3 yếu tố:
Khi đã có một hàm băm
f
thoả mãn 3 điều kiện trên và sử dụng để xác thực, quá trình lưu mật khẩuP
vào CSDL thànhD
và xác thực được thực hiện như sau:Lưu mật khẩu:
D = f(P)
Xác thực mật khẩu do người dùng nhập (
p
):Việc xác thực bao gồm 3 bước:
Bước 1: tính
f(p)
đặt ở BLL hoặc GUI đều được. Nên đặt ở BLL chống hackers.Bước 2: truy vấn
f(p)
và tên User (‘N’), CSDL trả về ‘D’. Thực hiện việc này ở DALBước 3: so sánh
f(p)
vàD
, thông báo ra GUI. Thực hiện việc này ở BLL