2009-09-23 5 views
0

대답이 필요하기 때문에 http://www.mentalis.org/forum/thread.qpx/971에서 다시 게시하십시오. 너희들이 나를 도울 수 있기를.CryptographicException : 암호 서비스 공급자 컨텍스트를 가져올 수 없습니다.

해당 구성 요소는 Org.Mentalis.SecurityServices.dll입니다.


안녕하세요. 나는 문제가있다.

CryptographicException : 암호화 서비스 공급자 컨텍스트를 가져올 수 없습니다.

스택 트레이스는 :

at Org.Mentalis.SecurityServices.Cryptography.CryptoHandle.CreateInternalHandle(IntPtr handle, String container) 
at ORG.Mentalis.SecurityServices.Cryptography.CryptoHandle.get_Handle() 
at Org.Mentalis.SecurityServices.Cryptography.RC4CryptoServiceProvider.ctor() 
at <place in my app where I try to create the RC4 CryptoServiceProvider> 

나는 클라이언트가 나에게 보낸 화면에서 손으로 그 예외 추적을 복사했다.

기본적으로 RC4CryptoServiceProvider를 사용하여 시작시 .ini 파일에서 암호화 된 사용자 세부 정보를로드하는 XP 용 .NET 3.5 WinForms 응용 프로그램을 만들었습니다. 몇 달 동안 잘 작동합니다.

약 일주일 전에 내 컴퓨터에서이 정확한 예외 메시지를 받았습니다. 온라인에서 사냥을했는데 많이 찾지 못했습니다. 찾은 모든 것이 웹 사이트와 관련이 있습니다.

결국 내 컴퓨터에서 작동하는 해결 방법을 찾았습니다.

C : 나는 다음과 같은 세 가지 폴더에서 파일을 삭제하면 \ 문서 및 설정 \ 응용 프로그램 데이터 \ 마이크로 소프트 \ 암호화 \ RSA \ 모든 사용자 \ MachineKeys

C \ : \ Documents 및 Settings \ All Users \ 응용 프로그램 데이터 \ 마이크로 소프트 \ 암호화 \ RSA \ 토큰 \

C : \ 문서 및 설정 \ my_username 응용 프로그램 데이터 \ 마이크로 소프트 \ 암호화 \ \ RSA \ 토큰 \

문제는 멀리 갔다. 다음 번에 응용 프로그램을 실행할 때 새 정보로 폴더가 다시 채워집니다.

나는 이것이 내 자신의 개발 환경에 고유 한 뭔가라고 생각했다. 나는 나의 암호화 파일과 폴더를 손상시킨 이상한 것을 다운로드했다. 내가 전문가 인 분야가 아닙니다. 단지 구성 요소를 사용하고 있으며, 그냥 작동합니다. 음 ... 지금까지.

내 회사 고객 중 한 명이 최근에 같은 오류가 발생하기 시작했으며 이유를 정당화 할 수 없어도 암호화 파일을 지우라고 요청하는 것이 쉽지 않습니다. 또한,이 예외는 일련의 상업용 터미널 서버에서 발생하므로 다운로드 한 이상한 것이 아닌 것 같습니다.

저는이 문제에 대한 지원을 찾고 있었지만 많은 행운이 없습니다. 나는 계속 주변을 살펴볼 것이다. 상황에 대해 밝히는 사람이 있습니까?

감사합니다.

+1

시작할 수있는 확실한 장소는 해결 방법을 찾은 곳입니다. 어떤 설명이 있었습니까? –

+0

어디서나 해당 해결 방법을 찾지 못했습니다. 먼저 procmon과 DLLTool을 사용하여 응용 프로그램이 수행하는 작업을 검색했습니다. C : \ Documents and Settings \ my_username \ Application Data \ Microsoft \ Crypto \ RSA \ token \ filename에 대한 참조가 있다는 것을 알아 채 셨습니다. 그 시점에서 필자는 해당 파일과 그에 상응하는 파일을 모든 사용자 폴더 그 후에 문제는 사라졌습니다. 결코 추천하지 않는 온라인 추천 - 그냥 시도해 보니 효과적이었습니다. 편집 해 주셔서 감사합니다, btw. –

답변

0

고객의 컴퓨터에 CSP가 설치되어 있는지 알고 있습니까? 이전 버전의 Windows에는 특정 CSP가 설치되지 않습니다. 그들은 강력한 암호화를 지원하지 않는 외국 버전의 Windows를 실행 중일 수도 있습니다. 프랑스어 버전이 모든 것을 가질 수는 없다고 생각합니다.

또 다른 가능성은 사용 권한 일 수 있습니다.코드를 실행하는 프로세스가 더 이상 관리 권한으로 실행되지 않거나 계정과 관련된 권한이 변경되었을 수 있습니다.

0

Mentalis 라이브러리는 CryptAcquireContext를 호출 할 때 실제로 CRYPT_VERIFYCONTEXT 플래그를 설정해야합니다. 그렇지 않은 경우 RC4CryptoServiceProvider의 각 인스턴스는 기본 영구 키 컨테이너 (procmon에있는 파일에 저장되어 있음)에 대한 핸들을 만듭니다.

키를 여러 스레드 (또는 여러 프로세스)로 생성하고 있습니까? 파일을 잠그는 데 문제가있는 것은 당연한 추측입니다.

관련 문제