2011-01-17 2 views
1

나는이 정말 간단 DLL을 만들려면 : XML 문서 었소이 수정 된 것을 확인합니다 XML 문서 2)에 서명합니다KeyContainerName을 사용하지 않고 XML 문서에 서명 할 수 있습니까?

1).

RSACryptoServiceProvider와 키 컨테이너를 사용해 보았습니다. 그러나 다른 컴퓨터로 옮길 때 키가 컴퓨터에 저장되는 것처럼 작동하지 않습니다.

내가 만드는 DLL에 키를 저장하려고한다. (나는 이것이 바람직하지 않다는 것을 알고있다.) 그러나 XML 문서에 서명하고 변경되지 않았 음을 확인하기 위해 몇 가지 코드를 작성하는 방법을 알아낼 수 없다. .

그래서 대칭 키를 사용해야 원하는 것을 수행 할 수 있습니까?

피트

+0

서명이 (공개 키와 개인 키) 키 쌍을 사용하여 수행됩니다. 비밀로 유지되는 개인 키를 사용하여 서명하고 다른 사용자는 공개 키를 사용하여 서명을 확인합니다. 공개 키는 일반적으로 문서와 함께 배포됩니다 (XMLDSig에서는 서명에 포함됨). 대칭 키는 서명에 사용되지 않습니다. 핵심 컨테이너에 관한 질문에 대해서는 불행히도 .NET Framework 클래스로이 작업을 수행하는 방법을 모릅니다. SecureBlackbox 제품은 이러한 번거 로움없이 완전한 XML 서명 프레임 워크를 제공합니다. –

답변

8

dll에 개인 키를 저장하는 문제는 이미 언급 했으므로이 작업을 반복하지는 않겠습니다.

는이 작업을 수행 :

를이 코드를 실행 자신의 컴퓨터에서 :

var key = new RSACryptoServiceProvider(2048); 
string publicKey = key.ToXmlString(false); 
string privateKey = key.ToXmlString(true); 
Console.WriteLine(publicKey); 
Console.WriteLine(privateKey); 

이 두 가지 (긴) 라인을 출력합니다. 코드에 그 복사 :

로그인 :

var privateKey = new RSACryptoServiceProvider(); 
privateKey.FromXmlString(/* insert the private-key XML string here */); 
privateKey.SignData(/*...*/); 

가 확인

var publicKey = new RSACryptoServiceProvider(); 
publicKey.FromXmlString(/* insert the public-key XML string here */); 
publicKey.VerifyData(/*...*/); 
+0

안녕 Rasmus 조언을 주셔서 감사합니다 이것은 실제로 올바른 구현입니다. 나는 열쇠를 내보내고 나눌 수 있다는 것을 깨닫지 못했다. 이것은 내가 기계 키 스토어를하기 위해 필요한 것이 었습니다. – Exitos

1

은 구현하기가 쉬울 것이다 당신의 XML 문서는 간단한 MD5 checksum (또는 다른 좋은 해시 알고리즘을) 변경되지 않았 음을 확인할 막이며, 당신이 필요로하는 경우. 그것은 또한 다른 기계에서 검증 할 수 있습니다.