使用Karl Malbrain 的C AES 实现我想加密可变长度的文件。但是,使用下面的代码会产生一个只有 16 个字节的正确加密字节的密码,然后是多个 00 字节,然后是密码的起始 16 个字节。
我是否错误地实现了它,或者 AES 实现不打算用于输入 > 16 字节?
最好的问候,-P
#include <stdio.h>
#include <stdint.h>
#include "aes.h"
#include <string.h>
void encryptStuff(void){
uint8_t key[AES_KEY_LENGTH] = "diesisteintest!!";
uint8_t keyschedule[AES_KEY_LENGTH * AES_ROUNDS] = {0x00};
uint8_t message[16] = {0x00};
uint8_t cipher[16197] = {0x00};
uint8_t i = 0;
uint8_t buffer[16197] = {0x42};
unsigned char filename[] = "test.bin";
FILE *ptr;
ptr = fopen(filename, "rb");
i = fread(buffer, 1, sizeof(buffer), ptr);
printf("Read %d bytes from %s:\n", i, filename);
for(i = 0; i<100;i++){
printf("%02x ", buffer[i]);
}
printf("\n", buffer);
printf("\n[D] Running AES-128 encryption\n");
aes_expand_key(key, keyschedule);
aes_encrypt(buffer, keyschedule, cipher);
printf("message: ");
for(i = 0; i<AES_KEY_LENGTH; i++){
printf("%02x", message[i]);
}
printf(" | cipher: ");
for(i = 0; i<sizeof(cipher); i++){
printf("%02x ", cipher[i]);
}
puts("");
}
int main(){
encryptStuff();
return 0;
}