2011-01-25 54 views
21

Tôi đang đặt câu hỏi này vì tôi đã dành phần tốt nhất trong một ngày để rà soát tài liệu MSDN và các nguồn mờ khác để có hướng dẫn đơn giản về cách bắt đầu với Windows C/C++ Crypto API.Ví dụ và mẹo về Crypto API của Window C/C++ Ví dụ và mẹo

Điều tôi muốn thấy là một số mã ví dụ, các đường dẫn bao gồm điển hình, hướng dẫn liên kết, v.v., bất kỳ điều gì hữu ích thực sự. Tôi biết đây là một câu hỏi không chính xác nhưng tôi nghĩ rằng câu trả lời không chính xác là không có gì tốt hơn cả.

tôi sẽ nhận được quả bóng lăn với những phát hiện ít ỏi của riêng tôi ...

+2

Bạn có nghĩa là CryptoAPI cổ điển như trong Win2k và XP, hoặc CNG ("CryptoAPI thế hệ tiếp theo") như trong Vista và Win7? Hai là không giống nhau. – dajames

+1

Hmm, tôi cho rằng tôi có nghĩa là CryptoAPI nhưng tôi đang biên dịch trên hệ thống Windows 7. –

Trả lời

21

Dưới đây là một loạt các ví dụ tôi đã tìm thấy ....

MSDN có các ví dụ này nằm rải rác xung quanh docs

website này cung cấp một cái nhìn tổng quan tốt trong những khái niệm cùng với các ví dụ cross-platform

+0

Bạn chỉ có thể hợp nhất hai câu trả lời của mình. –

+0

Làm cách nào để các câu trả lời có thể được hợp nhất? –

11

Các tài liệu MSDN đang ở đây: http://msdn.microsoft.com/en-us/library/aa380252.aspx

Đây là chính bao gồm file: #include <wincrypt.h>

Các bit mật mã là được bao gồm như một phần của Windows SDK, thường được cài đặt trong %PROGRAMFILES(x86)%\Microsoft SDKs\Windows\SDKVERSION (ví dụ: C:\Program Files\Microsoft SDKs\Windows\v6.0A). Các tiêu đề thường có trong %WINDOWSSDK%\Include và các thư viện có liên quan nằm trong %WINDOWSSDK%\Lib.

Bạn phải liên kết với các thư viện mã hóa một cách rõ ràng. Giả sử bạn đang ở trong Visual Studio, bạn có thể thêm tham chiếu bằng cách nhấp chuột phải vào dự án C++, chọn thuộc tính và chọn Configuration Properties -> Linker trên treeview ở bên trái. Sau đó, bạn có thể chỉ định crypt32.lib trong trường nhập ở bên phải.

Cách khác, (giả sử bạn đang sử dụng MSVC++) thêm

#pragma comment(lib, "crypt32.lib") 

để nguồn của bạn.

+1

Tôi đã sửa đổi và mở rộng đáng kể câu trả lời này. Vui lòng kiểm tra để đảm bảo bạn nghĩ rằng những thay đổi hữu ích :) –

+0

Ah !, cảm ơn, tôi sẽ không bao giờ nghĩ đến việc sử dụng chỉ thị #pragma. –