Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Zhaszowane dane składają się z zawartości dowolnego typu i haszu tej zawartości. Można go używać tylko wtedy, gdy jest to konieczne, aby potwierdzić, że zawartość wiadomości nie została zmodyfikowana od czasu utworzenia skrótu.
Podczas tworzenia wiadomości skrótu może być wiele algorytmów skrótu i wiele skrótów. Poniższa ilustracja przedstawia zadania wymagane do zaszyfrowania zaszyfrowanej wiadomości. Procedura jest opisana w tekście poniżej ilustracji.
Aby utworzyć zahaszowany komunikat
- Pobierz wskaźnik do danych, które mają zostać zhashowane.
- Wybierz algorytm skrótu do użycia.
- Przeprowadź dane przez funkcję haszującą, używając algorytmu hashującego.
- Dołącz oryginalne dane do hashowania, algorytmy haszujące oraz skróty do zakodowanego komunikatu.
Aby użyć funkcji komunikatów niskiego poziomu do wykonania właśnie opisanych zadań, użyj poniższej procedury.
Aby utworzyć skrót i zakodować komunikat przy użyciu funkcji wiadomości niskiego poziomu
Utwórz lub pobierz zawartość do haszowania.
Pobierz dostawcę usług kryptograficznych.
Zainicjuj strukturę CMSG_HASHED_ENCODE_INFO.
Wywołaj CryptMsgCalculateEncodedLength, aby uzyskać rozmiar zakodowanego komunikatu BLOB. Przydziel mu pamięć.
Wywołaj CryptMsgOpenToEncode, przekazując CMSG_HASHED dla parametru dwMsgType i wskaźnik do CMSG_HASHED_ENCODE_INFO dla parametru pvMsgEncodeInfo. W wyniku tego wywołania otrzymasz dojście do otwartego komunikatu.
Wywołaj CryptMsgUpdate, przekazując dojście pobrane w kroku 5 i wskaźnik do danych, które mają zostać haszowane i zakodowane. Ta funkcja może być wywoływana tyle razy, ile jest to konieczne do ukończenia procesu kodowania.
Wywołaj CryptMsgGetParam, przekazując uchwyt pobrany w kroku 5 i odpowiednie typy parametrów, aby uzyskać dostęp do żądanych, zakodowanych danych. Na przykład przekaż CMSG_CONTENT_PARAM, aby uzyskać wskaźnik do całego komunikatu PKCS #7.
Jeśli wynik tego kodowania ma posłużyć jako dane wewnętrzne dla innego zakodowanego komunikatu, takiego jak komunikat opatrzony kopertą, należy przekazać CMSG_BARE_CONTENT_PARAM. Aby zapoznać się z tym przykładem, zobacz alternatywny kod kodowania komunikatu kopertowego.
Zamknij komunikat, wywołując CryptMsgClose.
Wynikiem tej procedury jest zakodowany komunikat zawierający oryginalne dane, algorytmy haszujące i skrót tych danych. Wskaźnik do zakodowanego komunikatu blOB jest uzyskiwany w kroku 7.
Poniższe dwie procedury dekodują, a następnie weryfikują zahaszowane dane.
Aby zdekodować zahaszowane dane
- Pobierz wskaźnik do zakodowanego obiektu BLOB.
- Wywołaj CryptMsgOpenToDecode, przekazując niezbędne argumenty.
- Wywołaj CryptMsgUpdate raz, przekazując dojście pobrane w kroku 2 i wskaźnik do danych, które mają zostać zdekodowane. Powoduje to wykonanie odpowiednich akcji dla komunikatu w zależności od typu komunikatu.
- Wywołaj CryptMsgGetParam, przekazując dojście pobrane w kroku 2 oraz odpowiednie typy parametrów, aby uzyskać dostęp do żądanych, zdekodowanych danych. Na przykład przekaż CMSG_CONTENT_PARAM, aby uzyskać wskaźnik do zdekodowanej zawartości.
Aby zweryfikować skrótu
- Wywołaj CryptMsgControl, przekazując CMSG_CTRL_VERIFY_HASH celem weryfikacji skrótów.
- Wywołaj CryptMsgClose, aby zamknąć komunikat.
Aby zapoznać się z przykładowym programem, zobacz Przykład programu w języku C: kodowanie i dekodowanie komunikatu haszowanego.