2008-09-23 6 views
6

저는 회사 프로젝트를 위해 C#에서 PKI 라이브러리를 구현하는 임무를 맡았으며이를 구현하지 못했습니다. 여러 개의 라이브러리와 제거 된 MSDN 라이브러리를 가리키는 많은 깨진 링크가있는 것으로 보입니다. Crypt32.dll을 사용하는 사람들, 자신의 라이브러리를 만드는 사람들, 시스템 인증서 저장소에 액세스하기 위해 P/Invoke를 사용하는 사람들, 빌트인 라이브러리를 확장하는 사람들, C# (예 : Java 예제)에 단순히 적용되지 않는 예제를 보았습니다. 상업 도서관.암호화 라이브러리?

제 질문은 데이터의 간단한 암호화/암호 해독에 가장 적합한 구현/라이브러리입니다.

내가 수행 할 계획에 대한 배경 지식으로 개인 키 (.pfx)를 사용하여 메시지를 암호화하고 공개 키 (.cer)로 해독하기 만하면됩니다. 메시지 서명 및 인증은이 프로젝트의 레벨에서는 필요하지 않지만 향후에있을 수 있습니다. 암호화 길이에 대한 언급으로 인해 불안하게되었습니다. 우리는 모든 길이의 메시지를 암호화 할 수 있어야합니다 (당연히!). 이것이 내가 걱정할 필요가있는 것이고, 그렇다면 그것을 다루는 방법이 있습니까?

가능하면 Windows 인증서 관리자에 공용/개인 키를 저장하지 않는 편이 좋지만 구현이 훨씬 간단하면 그렇게하십시오.

나는 PKI 및 암호화가 크고 복잡한 될 수 있습니다 실현,하지만 난 (하나가 희망 할 수 맞죠?) ... 어쨌든 비교적 간단한 라이브러리

감사를 바라고 있어요!

답변

12

글쎄, 당신은 내장 클래스가 당신의 필요를 커버하지 않는다고 언급하지 않았습니까? 그럼 System.Security.Cryptography.RSACryptoServiceProvider은 어떻습니까?

스트림을 비대칭 적으로 암호화/해독 할 수있는 많은 방법이 있습니다.

몇 가지 튜토리얼/길을 따라 당신을 데려 갈 가이드가 있습니다

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

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

Google를 통해 찾아 볼 수 무수한 더있다.

업데이트 : : 길이 제한에 대해서는 암호화 알고리즘과 암호 해독에 모두 동일한 버퍼 알고리즘을 구현하면 문제가 발생하지 않습니다.

갱신 2 : 예, 예 RSACryptoProvider,하지만 당신은 공개/개인 키 솔루션을하려는 경우, System.Security.Cryptography.AsymmetricAlgorithm에서 파생 어떤 클래스를 사용할 수 있습니다. 또는 자신 만의 빌드 ... 아니면 어쩌면 :)

+0

에 좋은 튜토리얼있다의에서는 System.Security.Cryptography 네임 스페이스의 전체에 적용됩니다. 대부분의 암호 시스템에 필요한 모든 프리미티브를 포함해야합니다. –

+0

버퍼 알고리즘을 명확히 할 수 있습니까? Additonally, 이것이 RSA 암호 해독/암호화 표준이냐고 궁금합니다.이 암호화 중 일부는 클라이언트에게 전송되며, 내가 가지고가는 것과 동일한 버퍼 알고리즘을 사용할 것이라고 보장 할 수는 없습니다. 이것이 문제가 될 수 있습니까, 그렇지 않은가요? – Gabriel

0

예, 기본 제공 클래스에 문제가 있습니까?

그리고 당신은 Windows 인증서 저장소를 사용하지 않으려면이 비록 개인 키에 대한 좋은 아이디어입니다 확실하지이

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

같은 것을 사용할 수 있습니다.

피사체 사실 here