다른 컴퓨터에서 암호화 된 세션 유형 키 - 블롭을 가져올 때 CryptImportKey 함수가 hPubKey 0 (해독 키 핸들)을 허용하는 이유를 설명 할 수 있습니까?CryptoAPI의 CryptImportKey가 0의 hPubKey를 받아 들여 암호화 된 세션 키를 가져옵니다.
는 # 1PC 을 : 로컬 키 용기 내의 키 교환 키 쌍 (공개/비공개) (AT_KEYEXCHANGE/w CryptGenKey
)를 생성은, 다음 PUBLICKEYBLOB로 공용 부 수출
환경이있다 PC# 2로 보냅니다.
PC# 2 : PC# 1에서 공개 키 - 블롭을 가져 와서 로컬 키 - 컨테이너로 가져옵니다. 동일한 로컬 키 컨테이너에 세션 키를 만듭니다. 클라이언트의 키 블로 브에서 가져온 공개 키 (세션 키를 암호화하는 데 사용됨)를 사용하여 로컬 키 컨테이너 세션 키를 SIMPLEBLOB (CryptExportKey
)로 내 보냅니다.
PC# 1 : 로컬 키 컨테이너 hProv, 키 블록 버퍼 포인터 및 길이, hPubKey 및 플래그에 0 (영), HCRYPTKEY 핸들에 대한 포인터.
위의 작업을 수행 한 후에 올바른 핸들을 얻었고 돌아온 핸들을 사용하여 CryptEncrypt
과 CryptDecrypt
을 호출 할 수 있습니다. 예, CryptImportKey에 PC# 1에서 위의 첫 번째 단계에서 생성 된 키 교환 키 쌍의 핸들을 지정하면 잘 작동합니다. 나는 왜 hPubKey가 작동하는지 이해하지 못한다. 마치 CryptoAPI가 개인 키가 데이터를 암호화하는 것을 "아는"것처럼 보인다.
감사합니다.