Tôi đã tìm kiếm một cách để băm một chuỗi đã cho trong C# sử dụng khóa được xác định trước.MD5 Hashing Đưa ra một khóa trong C#
Trên cuộc phiêu lưu của tôi qua internet cố gắng tìm một ví dụ tôi đã thấy rất nhiều ví dụ MD5CryptoServiceProvider dường như sử dụng một khóa mặc định cho máy, nhưng không ai trong số họ áp dụng một khóa cụ thể. Tôi cần phải có một khóa cụ thể để mã hóa dữ liệu như để đồng bộ hóa nó với máy chủ của người khác. Tôi đưa cho họ một chuỗi băm và một số ID và họ sử dụng phân tích dữ liệu đó và trả lại một bộ tương tự cho tôi. Vì vậy, có anyway để có được md5 để băm thông qua một khóa cụ thể mà sẽ phù hợp với cả hai.
Tôi muốn điều này được thực hiện trong C#, nhưng nếu không thể với các thư viện, bạn có thể làm như vậy với một số ngôn ngữ web như php hoặc asp không?
Chỉnh sửa: Hiểu sai kịch bản tôi bị ném vào và sau khi ngồi một chút và suy nghĩ về lý do tại sao họ sẽ cho tôi sử dụng khóa xuất hiện họ muốn khóa được nối vào cuối chuỗi và băm. Bằng cách đó, máy chủ có thể nối thêm khóa mà nó có cùng với dữ liệu được truyền để đảm bảo máy tính truy cập hợp lệ của nó. Dù sao ... cảm ơn tất cả^_^
Edit2: Như bình luận của tôi dưới đây nói, đó là thuật ngữ 'salting' mà tôi không biết. Oh những niềm vui của việc ném vào một cái gì đó mới mà không có hướng dẫn.
Không có chìa khóa cho MD5 ... như Tom Ritter chỉ ra, đó là ** không ** một thuật toán mã hóa –
Như mọi người đã chỉ ra MD5 được băm, không mã hóa, nhưng nó không phải là rõ ràng từ bài viết của bạn nếu bạn thực sự * làm * muốn băm và bỏ lỡ hoặc thực sự muốn mã hóa. Làm rõ. – annakata
Chỉnh sửa của bạn không thực sự làm rõ câu hỏi của bạn. MD5 không sử dụng "khóa được xác định trước" mà bạn đang hỏi. Tuy nhiên, nếu tất cả những gì bạn cần làm là so sánh băm thì chỉ cần lấy băm của hai đầu vào của bạn và so sánh kết quả bit-cho-bit. Lưu ý rằng MD5 sẽ thường (chặn trường hợp rất khó xảy ra xung đột băm) cho kết quả hoàn toàn khác nhau ngay cả khi đầu vào thay đổi theo số lượng nhỏ nhất. – Naaff