CopyPastor

Detecting plagiarism made easy.

Score: 0.8531820238107749; Reported for: String similarity Open both answers

Possible Plagiarism

Reposted on 2022-09-21
by VanGogh Gaming

Original Post

Original - Posted on 2022-09-17
by VanGogh Gaming



            
Present in both answers; Present only in the new answer; Present only in the old answer;

With block encryption algorithms such as AES you need to add padding to the data being encrypted up to a multiple of the block length.
You can find out the size of the required encryption buffer directly by making an additional call to "CryptEncrypt" with a NULL buffer before the actual encryption:
dwBuffSize = dwDataLen // dwDataLen is the actual length of the data being encrpyted CryptEncrypt(hKey, NULL, TRUE, 0, NULL, &dwBuffSize, 0) dwPadding = dwBuffsize - dwDataLen // number of padding characters you need to add in the actual encryption process
Then append "dwPadding" number of characters (NULL works fine) to the data being encrypted and you will no longer get "Bad Data" errors in decryption.
The "CryptDecrypt" function already knows about padding and will return the actual size of the decryption buffer in one go so you will know exactly where your decrypted data ends.
With block encryption algorithms such as AES you need to add padding to the data being encrypted up to a multiple of the block length. Using your code example that already retrieves the block size you can calculate the padding required for encryption:
dwPadding = dwBlockLen - dwDataLen % dwBlockLen
Then append "dwPadding" number of characters (NULL works fine) to the data being encrypted and you will no longer get "Bad Data" errors in decryption.
You can also find out the size of the required encryption buffer directly by making an additional call to "CryptEncrypt" with a NULL buffer before the actual encryption:
dwBuffSize = dwDataLen CryptEncrypt(hKey, NULL, TRUE, 0, NULL, &dwBuffSize, 0) dwPadding = dwBuffsize - dwDataLen
Both methods are equivalent and produce the same desired result. The "CryptDecrypt" function already knows about padding and will return the actual size of the decryption buffer in one go so you will know exactly where your decrypted data ends.

        
Present in both answers; Present only in the new answer; Present only in the old answer;