【发布时间】:2013-04-24 03:54:41
【问题描述】:
我想加密一个 15 字节的数组。问题是我希望密文具有相同的大小。
我做了什么
- 制作证书:makecert.exe -n "CN=me" -sv PrivateKey.pvk -pe Certificate.cer
-
编写此代码以导入证书,然后加密明文。
BYTE FileContent[1024]; DWORD dwActualFileLen = 0; HANDLE hCertFile; if(CryptAcquireContext(&m_hCryptProv, NULL, MS_ENHANCED_PROV, PROV_RSA_FULL, 0)) { hCertFile = CreateFileA("C:\\projects\\Certificate.cer", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); ReadFile(hCertFile, FileContent, 1024, &dwActualFileLen, NULL); m_CertContext = CertCreateCertificateContext(X509_ASN_ENCODING, FileContent, dwActualFileLen); CryptImportPublicKeyInfo(m_hCryptProv, X509_ASN_ENCODING, &m_CertContext->pCertInfo->SubjectPublicKeyInfo, &m_hPubKey); } CryptEncrypt(m_hPubKey, NULL, TRUE, 0, tempBuffer, &dwNewLen, 128);
密文总是 128 字节。我想强制它与纯文本大小相同。
【问题讨论】:
-
代码看起来有点奇怪,但我是从我正在研究的课程中提取的。所以忘记结构和错误检查:)
标签: c++ winapi encryption public-key-encryption