How can I decrypt an encrypted message in AES which is of alphanumeric form? In the code below, encryption gives alphanumeric sequences, but decryption produces the wrong plaintext.
unsigned char key[16] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
};
int originalLen = strlen((const char *)message);
int lenofPaddedMessage = originalLen;
if (lenofPaddedMessage % 16 != 0)
lenofPaddedMessage = (lenofPaddedMessage / 16 + 1) * 16;
unsigned char *paddedMessage = new unsigned char[lenofPaddedMessage];
for (int i = 0; i < lenofPaddedMessage; i++) {
if (i >= originalLen)
paddedMessage[i] = 0;
else
paddedMessage[i] = message[i];
}
for (int i = 0; i < lenofPaddedMessage; i += 16)
AES_Encrypt(paddedMessage + i, key);
cout << " Encrypted message:" << endl;
for (int i = 0; i < lenofPaddedMessage; i++) {
cout << (paddedMessage[i]) << endl;
cout << " ";
}
unsigned char expandedKey[176];
int messageLen = strlen((const char *)paddedMessage);
unsigned char *decryptedMessage = new unsigned char[messageLen];
for (int i = 0; i < messageLen; i += 16) {
AESDecrypt(paddedMessage + i, expandedKey, decryptedMessage + i);
}
cout << "Decrypted message in hex:" << endl;
for (int i = 0; i < messageLen; i++) {
cout << hex << (int)decryptedMessage[i];
cout << " ";
}
cout << endl;
cout << "Decrypted message: ";
for (int i = 0; i < messageLen; i++) {
cout << decryptedMessage[i];
cout << endl;
}