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/ASYD_Cryptograhpy/SW01-XTEA-Cipher/main.c

130 lines
4.3 KiB

/*******************************************************************************
* How to run script:
* Run exe with following arguments in this order:
* 1. encrypt or decrypt (keyword)
* 2. file name (without extension)
* 3. path to folder where file is located in
* 4. file extension (e.g. ".TXT" - incl. dot!)
* Example Batch:
* ~dp0\SW01-XTEA-Cipher.exe encrypt test ~dp0 .TXT
* ~dp0\SW01-XTEA-Cipher.exe decrypt test_ENCR ~dp0 .CIP
*******************************************************************************/
/*******************************************************************************
* Include Files
*******************************************************************************/
#include <stdint.h> /* Funktionsbibliothek: Integer */
#include <stdlib.h> /* Funktionsbibliothek: Hilfsfunktionen */
#include <stdio.h> /* Funktionsbibliothek: Standard Ein- Ausgabe */
#include <string.h> /* Funktionen zur Stringbearbeitung */
#include "main.h"
#include "decrypt.h"
#include "encrypt.h"
// disable deprecated warning
#pragma warning(disable : 4996)
/*******************************************************************************
******************************* HAUPTPROGRAMM **********************************
*******************************************************************************/
main(argc, argv) /* Argumente an main-Funktion */
int argc;
char* argv[];
{
int Error = NO_ERROR; /* Errorcode der Filezugriffe */
char LoadFileName[NAMENSGROESSE + 1]; /* Variable fuer Originalfile */
char SaveFileName[NAMENSGROESSE + 1]; /* Variable fuer Sicherungsfile */
char key[4] = { 0 };
uint32_t key_uint32[4] = { 0 };
int mode = MODE_UNKNOWN; // 0 = unknown, 1 = encrypt, 2 = decrypt
if (strcmp(MODE, "encrypt") == 0)
{
mode = MODE_ENCRYPT;
}
else if (strcmp(MODE, "decrypt") == 0)
{
mode = MODE_DECRYPT;
}
// mode not recognized
else
{
printf("Modus nicht erkannt. Bitte encrypt oder decrypt bei Aufruf der Software angeben.\n");
return -1;
}
system("cls");
puts("XTEA Cipher");
puts("-----------------------\n");
puts("Please type your key here: (ENTER key will start the process!)");
fflush(stdin); // Flush
fgets(key, 4, stdin); // Text einlesen (max. 4 Zeichen)
// convert array to uint32
int i = 0;
while (i < 4)
{
key_uint32[i] = (uint32_t)key[i++];
}
/* Original file zusammensetzen */
strcpy(LoadFileName, PFAD);
strcat(LoadFileName, DATEINAME);
strcat(LoadFileName, DATEIENDUNG);
/* Output file zusammensetzen */
strcpy(SaveFileName, PFAD);
strcat(SaveFileName, DATEINAME);
if (mode == MODE_ENCRYPT)
{
strcat(SaveFileName, ENCRYPTED_ADD);
strcat(SaveFileName, ENCRYPTED_ENDING);
printf("Encryption processing...");
Error = encrypt(LoadFileName, SaveFileName, key_uint32);
}
else if (mode == MODE_DECRYPT)
{
strcat(SaveFileName, DECRYPTED_ADD);
strcat(SaveFileName, DECRYPTED_ENDING);
printf("Decryption processing...");
Error = decrypt(LoadFileName, SaveFileName, key_uint32);
}
system("cls");
/* Errors auswerten */
if (Error == NO_ERROR)
{
printf("\n-> Ausgabefile konnte erstellt werden.\n");
}
else
{
printf("ACHTUNG: Der Sicherungsvorgang konnte nicht umgesetzt werden!\n");
printf("-> Errorcode: %d\n", Error);
switch (Error)
{
case ERROR_OPEN_LOAD_FILE:
{ /* Problem mit Originalfile */
printf("-> Originalfile konnte nicht geoeffnet werden!\n");
printf(" Lesezugriff fuer Originalfile nicht moeglich!\n");
break;
}
case ERROR_OPEN_SAVE_FILE:
{ /* Problem mit Sicherungsfile */
printf("-> Das Ausgabefile konnte nicht erstellt werden!\n");
printf(" Schreibzugriff fuer Ausgabefile wurde verweigert!\n");
break;
}
case ERROR_OPEN_VERSCHL_FILE:
{ /* Problem mit PW-File */
printf("-> Das Passwort-File konnte nicht erstellt werden!\n");
printf(" Schreibzugriff fuer Passwort-File wurde verweigert!\n");
break;
}
}
}
system("pause");
return (0);
}