Pergunta

Eu tenho sido encarregado de implementar uma biblioteca PKI em C # para um projeto de empresa, e têm sido incapazes de encontrar uma boa implementação do mesmo. Parece haver várias bibliotecas, e muitos links quebrados que apontam para bibliotecas do MSDN que foram removidos. Eu vi pessoas usando Crypt32.dll, as pessoas a construir suas próprias bibliotecas, pessoas usando P / Invoke para armazenamentos de certificados do sistema de acesso, as pessoas que se estende o built-in bibliotecas, exemplos que simplesmente não se aplicam a C # (por exemplo, exemplos de Java), e bibliotecas comerciais.

A minha pergunta é, qual implementação / biblioteca é mais recomendado para criptografia simples / descriptografia de dados?

Como alguns de fundo para o que eu pretendo fazer com ele, eu simplesmente precisa Criptografar mensagens usando uma chave privada (.pfx) e descriptografar com chaves públicas (.cer). assinatura da mensagem e autenticação não é necessária a este nível do projeto, embora possa ser no futuro. Eu vi referência a comprimentos de criptografia que fazem me inquieta. Precisamos ser capazes de criptografar qualquer mensagem comprimento (dentro da razão, é claro!). Isto é algo que eu preciso para se preocupar, e se assim for, há uma maneira de lidar com isso?

Eu preferiria não arquivo público / chaves privadas no gerenciador de certificados janelas, se possível, mas se torna a implementação significativamente mais simples, que assim seja.

Eu percebo PKI e criptografia é um assunto vasto e complexo, mas eu estou esperando para uma biblioteca relativamente simples de qualquer maneira ... (que se pode esperar, certo?)

Obrigado!

Foi útil?

Solução

Bem, você não mencionou que o built-in de classe não cobre as suas necessidades, assim como sobre System.Security.Cryptography.RSACryptoServiceProvider ?

Ele tem um grande conjunto de formas qualificadas para assimetricamente criptografar / descriptografar córregos.

Existem vários tutoriais / guias para levá-lo ao longo do caminho:

http://www.codeproject.com/KB/security/RSACryptoPad.aspx

http://www.eggheadcafe.com/articles/20020630.asp

Existem incontáveis ??mais para ser encontrada através Google .

Atualizar :. Sobre o comprimento-restrictments, é não deve ser nenhum problema se você acabou de implementar o mesmo tampão-algorithm em ambos os lados, criptografia e descriptografia

Update2 : Sim, meu exemplo foi RSACryptoProvider , mas você pode usar qualquer classe de que deriva de System.Security.Cryptography.AsymmetricAlgorithm , se você quiser um público / chave privada -solução. Ou construir o seu próprio ... ou talvez não:)

Outras dicas

Sim, o que há de errado com built-in aulas?

E se você não quiser usar armazenamento de certificados do Windows, você pode usar algo como isto

RSACryptoServiceProvider rscp = new RSACryptoServiceProvider();
rscp.FromXmlString("<RSAKeyValue><Modulus>key data gere</Modulus><Exponent></Exponent></RSAKeyValue>");

Não tenho certeza de que esta é uma boa idéia para chaves privadas, no entanto.

Há um bom tutorial sobre o assunto aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top