Trả trước, tôi muốn thú nhận là một người mới hoàn thành về mật mã và bảo mật mật khẩu. Tôi đang cố gắng để lưu trữ mật khẩu trong một cơ sở dữ liệu được babysat bởi ruby. sự hiểu biết của tôi là mật khẩu chữ thô nên được nối thêm vào một "muối" ngẫu nhiên và rằng toàn bộ cụm từ nên được băm bằng một số thuật toán băm như:làm việc với mật khẩu băm trong ruby
Digest::SHA1.hexdigest(salt_plus_plainpassword)
Khi chuỗi được lưu trữ trong cơ sở dữ liệu, làm thế nào để có được nó một lần nữa để xác minh rằng những gì người dùng đã nhập là chính xác nếu có một muối ngẫu nhiên chưa biết được nối vào nó?
Cũng được nói. –
Để xây dựng trên đó: lưu trữ muối không phải là một vấn đề vì mục đích duy nhất của nó là để cứu bạn khỏi các cuộc tấn công vào các bảng cầu vồng. Như băm là không thể đảo ngược nhưng có thể dự đoán được, những kẻ tấn công có thể tìm ra mật khẩu từ các băm không bẻ khóa bằng cách chỉ nhìn vào các băm được tính toán trước của các mật khẩu thông thường. Để nói lại rằng: đoán và liệt kê kết quả của sha1 ("hello") [1] rất dễ, đoán kết quả của sha1 ("hello" + salt()) thực sự khó. [1] đó là: aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d, vì vậy bất cứ khi nào tôi tìm thấy trong cơ sở dữ liệu chưa được đánh giá, tôi biết mật khẩu. – Skade