Tôi tin rằng một số (tất cả?) Triển khai DES chỉ sử dụng 7 bit cho mỗi ký tự của khóa (mã hóa ASCII). Tôi không chắc chắn nếu định nghĩa của DES cho phép các ký tự 8 bit trong các khóa hoặc nếu nó thực sự bỏ qua bit cao của mỗi byte. Tôi nghĩ đó là thứ hai.
Tuy nhiên, trong các kích thước khóa .NET được dựa trên số byte, thời gian 8 bit mỗi byte, ngay cả khi thuật toán cơ bản bỏ qua bit đầu đó. Đó có lẽ là sự khác biệt chính.
TripleDES chạy DES ba lần với ba khóa DES 56 bit khác nhau. Trong một số triển khai, chạy giữa được đảo ngược (mã hóa-giải mã-mã hóa hoặc "EDE") để sử dụng cùng một khóa DES 56 bit cho cả ba bản sao mã hóa của DES đơn giản. Điều này được thực hiện để tương thích với các hệ thống cũ hơn, nơi cả hai đều đang sử dụng mã hóa dựa trên phần cứng. Tôi không chắc liệu TripleDESCryptoServiceProvider có sử dụng phương pháp "EDE" này hay phương pháp "EEE" (hay cung cấp cho bạn một lựa chọn). Hơn nữa, cùng một khóa DES 56 bit có thể được sử dụng cho lần chạy đầu tiên và thứ ba, sử dụng khóa 112 bit thay vì khóa 168 bit mà nó cũng có thể sử dụng.
Chứng chỉ TripleDESCryptoServiceProvider sẽ không chấp nhận khóa 56 bit (64 bit) vì nó không thực sự bảo mật 3DES (bạn có thể sử dụng DESCryptoServiceProvider thay thế?). Tại một thời điểm nó được xác định rằng các bit 3D-bit EEE (hoặc EDE?) 3DES không cung cấp bất kỳ bảo mật lớn hơn so với sử dụng một khóa 112-bit (128-bit). Tuy nhiên, có thể có một số cuộc tấn công cực đoan (thường không khả dụng) trong đó khóa ngắn hơn về mặt lý thuyết dễ bị tổn thương hơn. Điều đó cũng có thể áp dụng cho câu hỏi EDE và EEE.
Về khả năng tương thích của bạn với các câu hỏi ngôn ngữ khác, .NET * Các lớp CryptoServiceProvider chỉ là một API bao quanh thư viện Windows CRYPTO cơ bản.Nếu các ngôn ngữ khác cũng đang sử dụng thư viện Windows CRYPTO, nó phải tương thích. Nếu không, bạn sẽ phải tìm hiểu xem họ đang sử dụng EDE hoặc EEE và đảm bảo rằng tất cả đều sử dụng cùng một (bạn có thể hoặc không thể linh hoạt về điều đó), và rõ ràng là sử dụng cùng độ dài khóa. Họ có lẽ là tất cả bằng cách sử dụng cùng một thứ tự byte, nhưng nếu bạn tìm thấy mọi thứ vẫn không phù hợp với đó có thể là một điều để kiểm tra. Nhiều khả năng trên Windows, tất cả chúng đều sử dụng CRYPTO và có thể sẽ khớp với điều kiện bạn có thể đặt các tùy chọn theo cùng một cách cho tất cả chúng.
Nguồn
2011-07-20 18:08:32
ba ngày kể từ khi nhìn vào ví dụ vô dụng sau đó câu trả lời này đã giúp tôi nhận ra cách Net hỗ trợ các phím 128bit và chức năng CCCrypt lực lượng bạn vào 192bit. .. nó sao chép 64 bit đầu tiên của 128bits vào cuối để K3 = K1. Khả năng tương thích với iOS <-> C# .Net. Quá dễ. –