Ứng dụng của tôi sử dụng lớp RijndaelManaged để mã hóa dữ liệu. Là một phần của mã hóa này, tôi sử dụng một đối tượng SecureString được nạp với một mật khẩu nhận được chuyển đổi thành một mảng byte và được nạp vào khóa của đối tượng RajindaelManaged khi chạy.Lưu trữ mật khẩu an toàn trong mã chương trình?
Câu hỏi tôi có là lưu trữ SecureString này. Người dùng nhập mật khẩu có thể được nhập vào thời gian chạy, và có thể được "an toàn" được nạp vào một đối tượng SecureString, nhưng nếu không có mật khẩu người dùng được nhập, thì tôi cần phải mặc định một cái gì đó.
Vì vậy, cuối cùng là quesiton đi xuống đến:
Nếu tôi cần phải có một số được biết đến chuỗi hoặc byte mảng để nạp vào một đối tượng SecureString mỗi lần ứng dụng chạy của tôi, làm thế nào để làm điều đó? Dữ liệu "mã hóa" cuối cùng được giải mã bởi ứng dụng khác, vì vậy ngay cả khi không có mật khẩu người dùng được chỉ định, tôi vẫn cần dữ liệu được mã hóa trong khi nó chuyển từ ứng dụng này sang ứng dụng khác. Điều này có nghĩa là tôi không thể có mật khẩu mặc định là ngẫu nhiên, bởi vì các ứng dụng khác sẽ không thể giải mã nó một cách chính xác. Một giải pháp có thể tôi đang nghĩ là tạo một dll chỉ tạo ra một cụm mật khẩu, sau đó tôi sử dụng cụm mật khẩu đó và chạy nó thông qua một vài hàm băm/tổ chức lại khác nhau trong thời gian chạy trước khi tôi đưa nó vào đối tượng secureString. Điều này có đủ an toàn không?
Chỉnh sửa Để rõ ràng *: Dữ liệu được mã hóa đang được chuyển qua các tệp giữa các máy. Hãy coi đó là tệp Zip luôn có mật khẩu, một tệp mặc định được giả định nếu không có gì được người dùng nhập trực tiếp.
Tôi đã đọc câu hỏi như đã đưa ra một giải pháp thay thế để mã hóa chuỗi cứng ngay từ đầu. – Serapth
Nó không phải là cục bộ cho máy, dữ liệu được mã hóa kết thúc bằng xml và sau đó được truyền tới một máy khác (mặc dù không có kết nối trực tiếp). – Nick
+1 Tôi hoàn toàn đồng ý với Pidgin. – rook