2011-01-28 60 views
8

tôi không bao giờ làm việc với thư viện mã hóa nhưng tôi muốn mã hóa một chuỗi có khóa cá nhân và giải mã bằng khóa công khai. làm thế nào để đạt được điều này trong C#. hãy giúp tôi với đoạn mã nhỏ. thanksLàm thế nào để mã hóa một chuỗi với khóa riêng và giải mã bằng khóa công khai?

+1

Bạn không được mã hóa chuỗi tùy ý bằng RSA. Bạn nên mã hóa khóa đối xứng ** được tạo ngẫu nhiên ** một cách chính xác với RSA. – CodesInChaos

+1

@CodeInChaos: Tôi đồng ý rằng đó là những gì RSA đang được sử dụng trong hầu hết thời gian nhưng việc sử dụng RSA không bị hạn chế. –

+0

AFAIK RSA không an toàn để mã hóa các chuỗi không được đệm tùy ý. – CodesInChaos

Trả lời

10

AFAIK, Mặc dù về mặt kỹ thuật không có sự khác biệt về toán giữa khóa công khai và khóa riêng tư, bạn cần sử dụng chúng một cách nhất quán vì lý do bảo mật.

Bạn đang yêu cầu mã hóa bằng khóa cá nhân và giải mã bằng khóa công cộng. Đây thường là cách sai lầm. Nếu bạn muốn đi theo hướng này, nó thường là một hoạt động được gọi là "ký điện tử".

Nếu bạn ký bằng khóa riêng sao cho khóa này có thể đảo ngược bằng khóa công khai công khai, thì đó không thực sự là bí mật. Tôi cho rằng bạn chỉ đang cố gắng xác thực thư là hợp pháp từ người gửi. Những gì bạn cần là chữ ký số - vẫn được thực hiện bằng khóa công khai-khóa-riêng (hoặc "không đối xứng"). Với các chữ ký số, bản thân thông điệp không phải là bí mật (không cần bất kỳ ai có khóa công khai có thể giải mã) nhưng được kèm theo dữ liệu bổ sung, dựa trên thông báo, có thể xác minh bằng khóa công khai và có thể chỉ được tính bởi một người có khóa riêng phù hợp.

Nó sẽ trông giống như sau. Bây giờ bạn chỉ cần tìm ra nơi bạn sẽ nhận được chìa khóa.

static byte[] GenerateDigitalSignature(byte[] data, RSAParameters asymmetricKey) 
{ 
    using (var rcsp = new RSACryptoServiceProvider()) 
    using (var cp = new SHA1CryptoServiceProvider()) 
    { 
    rcsp.ImportParameters(asymmetricKey); 

    return rcsp.SignData(data, cp); 
    } 
} 
+0

Điều này chỉ ký dữ liệu. Nó không mã hóa nó. –

+0

Yup ............ –

Các vấn đề liên quan