在业余时间,我实现了一个简单的Visual C ++应用程序,以展示Microsoft Crypt库的功能。 使用MD5校验和和RC4加密/解密,已实现并测试了以下功能:
- 布尔GetChecksumBuffer(ALG_ID nAlgorithm,LPBYTE lpszOutputBuffer,DWORD&dwOutputLength,LPBYTE lpszInputBuffer,DWORD dwInputLength);
- 布尔GetChecksumString(ALG_ID nAlgorithm,CString&strResult,CString strBuffer);
- 布尔GetChecksumFile(ALG_ID nAlgorithm,CString&strResult,CString strPathName);
- BOOL EncryptBuffer(ALG_ID nAlgorithm,LPBYTE lpszOutputBuffer,DWORD和dwOutputLength,LPBYTE lpszInputBuffer,DWORD dwInputLength,LPBYTE lpszSecretKey,DWORD dwSecretKey);
- BOOL EncryptFile(ALG_ID nAlgorithm,CString strOutputName,CString strInputName,LPBYTE lpszSecretKey,DWORD dwSecretKey);
- BOOL DecryptBuffer(ALG_ID nAlgorithm,LPBYTE lpszOutputBuffer,DWORD和dwOutputLength,LPBYTE lpszInputBuffer,DWORD dwInputLength,LPBYTE lpszSecretKey,DWORD dwSecretKey);
- 布尔DecryptFile(ALG_ID nAlgorithm,CString strOutputName,CString strInputName,LPBYTE lpszSecretKey,DWORD dwSecretKey);
这是程序的示例用法
CString strBuffer1 = _T("abc"), strResult1;
VERIFY(GetChecksumString(CALG_MD5, strResult1, strBuffer1));
TRACE(_T("MD5(%s) => %s\n"), strBuffer1, strResult1);
CString strBuffer2 = _T("abc"), strResult2;
VERIFY(GetChecksumFile(CALG_SHA1, strResult2, _T("D:\\AddressBook.csv")));
TRACE(_T("SHA1(%s) => %s\n"), strBuffer2, strResult2);
CString strSecretKey = GetComputerID();
LPBYTE lpszSecretKey = (LPBYTE)(LPCTSTR)strSecretKey;
DWORD dwSecretKey = (strSecretKey.GetLength() + 1) * sizeof(TCHAR);
CString strFilename = _T("D:\\AddressBook.csv");
CString strEncrypt = _T("D:\\AddressBook.rc4");
CString strDecrypt = _T("D:\\AddressBook.txt");
VERIFY(EncryptFile(CALG_RC4, strEncrypt, strFilename, lpszSecretKey, dwSecretKey));
VERIFY(DecryptFile(CALG_RC4, strDecrypt, strEncrypt, lpszSecretKey, dwSecretKey));
From: https://bytes.com/topic/apis/insights/915015-demo-microsofts-crypt-library