You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
ASYD/SW01-XTEA-Cipher/SW02-XTEA-CBC/XTEA-CBC.c

37 lines
1.1 KiB

/**
*--------------------------------------------------------------------\n
* HSLU T&A Hochschule Luzern Technik+Architektur \n
*--------------------------------------------------------------------\n
*
* \brief model solution for ASYD assignment crypto 01
* \file
* \author SIMON FREI, stefano.nicora@hslu.ch
* \date 04.10.22
*
*--------------------------------------------------------------------
*/
#include <stdint.h>
#include "XTEA-CBC.h"
#include "XTEA.h"
#define INITIALIZATION_VECTOR { 'COFE', 'SIMI' }
void encipher_CBC(unsigned int num_cycles, uint32_t v[2], uint32_t const k[4]) {
static uint32_t v_prev[2] = INITIALIZATION_VECTOR;
v[0] = v[0] ^ v_prev[0];
v[1] = v[1] ^ v_prev[1];
encipher(num_cycles, v, k);
v_prev[0] = v[0];
v_prev[1] = v[1];
}
void decipher_CBC(unsigned int num_cycles, uint32_t v[2], uint32_t const k[4]) {
static uint32_t v_prev[2] = INITIALIZATION_VECTOR;
uint32_t v_input[2] = { v[0], v[1] };
decipher(num_cycles, v, k);
v[0] = v[0] ^ v_prev[0];
v[1] = v[1] ^ v_prev[1];
v_prev[0] = v_input[0];
v_prev[1] = v_input[1];
}