Descriptografando arquivos de dados com o wincrypt. Tendo problemas. Exemplo mostra cbase64utils?
Pergunta
Preciso descriptografar alguns arquivos de dados com Wincrypt e exemplos são poucos e distantes entre online. O exemplo mais sólido que encontrei é aqui. No entanto, isso está usando todos os tipos de tipos sobre os quais não consigo encontrar informações (cbase64utils, cString etc.).
Estou lendo a solução final, tentando entender o processo, e cheguei a isso:
// 5. Determine the LENGTH of the BUFFER to hold the corresponding cyphertext.
CBase64Utils bu;
int ipszSourceLen = strlen(pszSource);
char *pszSource2 = bu.Decode(pszSource, &ipszSourceLen);
DWORD dwSourceLen = strlen(pszSource2); // Get the length of the input string.
DWORD dwDataLen = dwSourceLen;
BYTE* pTarget = NULL;
DWORD dwCryptDataLen = dwDataLen;
CryptEncrypt(hKey, 0, TRUE, 0, NULL, &dwCryptDataLen, dwDataLen);
Isso é puro chinês para mim. Alguém pode entender isso e, esperançosamente, limpar algumas águas enlameadas? Obrigado
Solução
O código que você vinculou é horrível. Parece que o sujeito escreveu seu método Encrypt e, posteriormente, escreveu seu método descriptografado simplesmente copiando e colando o primeiro método e fazendo algumas alterações (mas deixando uma tonelada de código que sobrou do processo de criptografia). Eu não ficaria surpreso se funcionasse, é apenas que desperdiça tempo e espaço fazendo trabalhos inúteis restantes da criptografia (além dos comentários são todos para trás).
Como o Wincrypt é uma biblioteca da Microsoft, há muitos exemplos no msdn. Como as amostras do MSDN são (geralmente) bem escritas e bem contratadas, elas devem ser muito mais fáceis de entender, então eu recomendaria que você as olhe.