Chỉ cần để xóa mọi thứ lên một chút:
RSA có thể được sử dụng một trong hai để mã hóa (đảm bảo rằng Eve không thể đọc được thông điệp mà Alice gửi cho Bob) hoặc ký (đảm bảo rằng nếu Alice gửi một thông điệp cho Bob, Bob biết rằng đó thực sự là Alice gửi tin nhắn, và không phải Eve giả vờ là Alice)
RSA tạo ra một cặp khóa - khóa công cộng và khóa riêng. RSA được thiết kế sao cho nếu bạn áp dụng khóa công khai và sau đó áp dụng khóa riêng, hoặc ngược lại, bạn sẽ nhận được thông báo tương tự. Và khóa công khai không thể được lấy từ khóa riêng (hoặc ngược lại).
Để sử dụng RSA để mã hóa, Alice mã hóa thư bằng khóa công khai của Bob. Cách duy nhất để đọc tin nhắn này là với khóa riêng của Bob, mà chỉ có anh ta có. Vì thế Eve không thể đọc được thông điệp vì anh ta không có chìa khóa này. Mặt khác, điều này không cung cấp xác thực nguồn gốc của thông báo. Eve cũng có thể lấy khóa công khai của Bob (vì nó công khai) và gửi tin nhắn cho Bob, giả vờ là Alice.
Để sử dụng RSA để ký, Alice lấy một mã băm của thư, mã hóa băm bằng khóa riêng của mình và nối kết quả (đây là chữ ký) vào thư. Eve tất nhiên vẫn có thể giải mã điều này bằng cách sử dụng khóa công khai của Alice. Tuy nhiên, Bob có thể giải mã chữ ký bằng khóa công khai của Alice và xem nó có khớp không.Nếu có, nó phải được mã hóa bằng khóa riêng của Alice, mà chỉ có cô ấy mới có, vì vậy nó phải đến từ Alice.
Hiện tại, tôi không quen với API mã hóa .NET, vì vậy tôi không chắc liệu nó có hoạt động chính xác như được mô tả ở đây hay không. Nhưng lời giải thích này có thể giúp bạn hiểu một số câu trả lời bạn đang nhận được.
* "Mã hóa bằng khóa cá nhân" * không phải là một hoạt động mã hóa hợp lệ. Nếu bạn đang cố gắng thực hiện thao tác đó, thông thường bạn muốn có *** Lược đồ Chữ ký với Phục hồi ***. – jww