как хранить симметричный ключ в aes
Я пишу простой декодер / кодировщик aes, используя libtomcrypt. Мне нужно рассказать о симметричных ключах, используемых при кодировании, чтобы потом декодировать данные. Проблема в том, что значение ключа, к которому я обращаюсь из структуры "хранилища", изменяется по сравнению с ключом, который использовался в кодировщике.
Я попытался присвоить значение ключа элементу глобального массива symric_key elem, но значение все еще отличается от исходного
#include <tomcrypt.h>
typedef struct {
unsigned char * data;
unsigned char * crc_value;
symmetric_key skey;
}
aes_info_set;
aes_info_set aes_encrypter(unsigned char * data, unsigned char * key, int buf_size, int keysize, int rounds);
void main() {
unsigned char * data = "hallo world";
aes_info_set test;
test = aes_encrypter(data, key, 80, 32, 14);
printf("struct skey: %x \n", test.skey);
}
aes_info_set aes_encrypter(unsigned char * data, unsigned char * key, int buf_size, int keysize, int rounds) {
aes_info_set info_pack;
unsigned char * text = data;
unsigned char enc_out[buf_size];
unsigned char * crc_value = (unsigned char * ) malloc(4 * sizeof(unsigned char));
symmetric_key skey;
crc_value = crc_check(text, strlen(text));
aes_keysize( & keysize);
aes_setup(key, keysize, rounds, & skey);
aes_ecb_encrypt(text, enc_out, & skey);
printf("FROM FUNC\n");
info_pack.data = enc_out;
info_pack.crc_value = crc_value;
info_pack.skey = skey;
printf("func skey: %x \n", skey);
return info_pack;
}
//Output
>func skey: a15b56e0
>
>struct skey: a15b7890
Я ожидал, что они будут такими же
1 ответ
Если я правильно понимаю, вы путаете ключ, который вам нужен для шифрования / дешифрования вашего файла, и "ключ", который используется внутри библиотеки, чтобы делать то, что вы хотите.
Ключ, который вы хотите сохранить, - это тот, который передается в качестве первого аргумента в aes_setup()
, тогда как экземпляр symmetric_key
не важно.
См. Примеры, например, в тестах AES aes.c:647 о том, какrijndael_setup()
используется (rijndael_setup()
такой же как aes_setup()
).