У меня есть код, который выглядит, как показано ниже. Код здесь, если word_size = 64
. Аналогичным образом мне нужно иметь и 32, и 16. Я не могу найти способ повторно использовать ту же функцию encrypt
для всех размеров. Кроме того, мне нужно объявить переменные тоже в соответствии с word_size, т.е. использовать либо uint_16
, либо uint_32
или uint_64
зависит от слова_размер. Можете ли вы помочь мне написать код повторного использования в этом случае?Лучший способ объявить конкретные переменные ширины в зависимости от пользовательского ввода
#include<stdio.h>
#include<stdint.h>
void encrypt(uint64_t* , uint64_t*, uint64_t*);
int main(){
int block_size;
// Get the user inputs
printf("input the block size: \n");
scanf("%d", &block_size); // can be 32, 64 or 128
int word_size = block_size/2; // 16,32 or 64
// Depending on the word_size, I should declare the variables with
// corresponding width
uint64_t plain_text[2] = {0,0};
uint64_t cipher_text[2] = {0,0};
uint64_t key_text[2] = {0,0};
uint64_t * pt, *ct, *k;
encrypt(pt, ct,k);
}
/*
* Ecnryption Method
*/
void encrypt(uint64_t* pt, uint64_t* ct, uint64_t* k){
// Involves bit shifting algorithm which works only on exact sizes i.e eiter 16,32 or 64.
}
При необходимости я могу предоставить дополнительную информацию.
Определим функцию с наибольшим размером, и сделать его принять дополнительные параметр ширины. Затем определите ширину во время выполнения, сравнив входные данные с максимальными значениями каждого типа. –
У вас есть возможность использовать C++? Если вы это сделаете, шаблон функции решит вашу проблему с дизайном. –
Извините, нет опции C++. разве нет простой способ в Clelef? – NanoNi