Tôi đang viết một ứng dụng C# sẽ là nguồn mở và tôi cần có khả năng lưu trữ thông tin đăng nhập đã lưu cho từng người dùng. Thông thường tôi sẽ chỉ mã hóa mật khẩu và sau đó lưu trữ nó trong một tập tin cài đặt người dùng, nhưng tôi lo lắng vì mã nguồn là mã nguồn mở, nó đánh bại điểm mã hóa nó. Vì tất cả mọi người sẽ phải làm là nhìn vào mã và lấy khóa mã hóa.Lưu trữ mật khẩu đã lưu trong ứng dụng Mã nguồn mở
Được cấp, ít nhất sẽ làm cho nó khó hơn rất nhiều so với mật khẩu được lưu trữ ở dạng văn bản thuần túy. Nhưng có cách nào để mã hóa mật khẩu, nhưng làm cho nó vẫn còn ít nhất là rất khó để giải mã nó ngay cả khi bạn có nguồn? Có lẽ làm cho nó như vậy nó sẽ ít nhất là gần như không thể giải mã trên bất kỳ máy tính khác hơn là một trong nó đã được mã hóa trên?
EDIT: Làm rõ ... Tôi đang lưu trữ mật khẩu bên CLIENT, KHÔNG mật khẩu để xác thực đăng nhập của họ cho dịch vụ. Đó là một khách hàng với một dịch vụ web đã tồn tại từ trước mà tôi không có quyền kiểm soát. Tôi chỉ muốn lưu trữ mật khẩu cục bộ để đăng nhập tự động ... giống như bất kỳ ứng dụng trò chuyện nào.
CHỈNH SỬA 2: Hoàn toàn xin lỗi vì không rõ ràng trước đây. Nhưng mật khẩu phải được lấy ra trong văn bản rõ ràng tại một số điểm và băm không phải là một lựa chọn: (Ngay cả khi dịch vụ sẽ cho phép tôi vượt qua băm mật khẩu sẽ đánh bại mục đích vì băm sẽ tốt như mật khẩu: P
Không hiểu ý bạn về băm ... Tôi cần văn bản rõ ràng thực tế của mật khẩu tại một số điểm vì nó phải được chuyển từ khách hàng của tôi sang dịch vụ (kết nối được mã hóa) và không thể một băm. –
Từ mật khẩu bạn nhận được, chỉ cần tính toán băm một lần nữa và so sánh với băm bạn lưu trữ trong DB. Nếu chúng khớp, mật khẩu sẽ khớp nhau. Tất nhiên nếu bạn cần mật khẩu để đăng nhập ở một nơi khác từ máy chủ của bạn, điều này sẽ không giúp bạn. – Krumelur
Ông CHANGED câu hỏi một phần, làm rõ thực sự, bỏ phiếu xuống là một ltitle không công bằng. – Lloyd