Tbalz
asked on
Question on C code, how to make this code more efficient
Hi Guys,
I'm helping a friend making their C code more efficient for encryption program. Do you guys have any ideas on what i can do/modify to make it more efficient and improve on the current code?
I'm helping a friend making their C code more efficient for encryption program. Do you guys have any ideas on what i can do/modify to make it more efficient and improve on the current code?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <sys/time.h>
typedef int int32;
typedef unsigned char int8;
static void combine_it(int8 *output, int8 *input_1, const int8 *input_2, int32 length)
{
int32 i = 0;
for(i=0; i<length; i++)
{
output[i] = (int8)(input_1[i] ^ input_2[i]);
}
return;
}
static void itoa( int32 num, int8 *alpha, int32 radix )
{
if( radix == 10 )
{
sprintf(alpha, "%i", num);
}
else if( radix == 16 )
{
sprintf(alpha, "%X", num);
}
}
int8 *create_new_key(int8 modifier, const int8 *input_1, int32 length)
{
int8 leading[3];
int32 i_leading;
int8 * temp_string = NULL;
int8 * ret;
int32 i = 0;
itoa(modifier/2, leading, 10);
i_leading = atoi(leading);
temp_string = (int8 *) malloc(8);
ret = (int8 *) malloc(length);
memset(temp_string, 0, 8);
temp_string[0] = 0;
if( (modifier+1)%2 == 0 ) {
temp_string[0] = (int8)((i_leading<<4) + 8);
}
else {
temp_string[0] = (int8)(i_leading<<4);
}
for(i=0; i<(length>>3); i++)
{
combine_it(ret+i*8, temp_string, input_1+i*8, 8);
}
free(temp_string);
return ret;
}
// Do not change anything in main
// main only contains example input
// Change anything else
int main(int argc, char **argv) {
// Example input data
int8 data[32] = { 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,15,16,
17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32};
int8 *resp = create_new_key(0x10, data, sizeof(data));
free(resp);
return 0;
}
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.