可能是由于加密密钥、IV向量或加密数据的长度不正确导致的。以下是一些可能的
确保使用的加密库支持CBC模式(例如AESLib)。如果不支持,可以尝试使用其他支持CBC模式的库或自己实现。
确保密钥长度为128位(16个字节),IV向量长度为16个字节,加密数据长度为16的倍数。如果不是,则需要进行填充。
尝试使用标准的AES加密测试向量,以确保加密实现正确:
byte key[] = {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6, 0xab, 0xf7, 0x15, 0x88, 0x09, 0xcf, 0x4f, 0x3c};
byte iv[] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
byte data[] = {0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a};
byte expected[] = {0x3a, 0xd7, 0x7b, 0xb4, 0x0d, 0x7a, 0x36, 0x60, 0xa8, 0x9e, 0xca, 0xf3, 0x24, 0x66, 0xef, 0x97};
AES aes(key, iv, AES::AES_MODE_128, AES::CIPHER_ENCRYPT);
aes.do_aes(data, sizeof(data), encrypted);
if(memcmp(encrypted, expected, sizeof(expected)) == 0) {
// 加密成功!
} else {
// 加密