Changes revert
This commit is contained in:
parent
9a6df5abbb
commit
d9a99b9851
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2022 Václav Šmejkal
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
14
Makefile
Normal file
14
Makefile
Normal file
@ -0,0 +1,14 @@
|
||||
all: main
|
||||
|
||||
# Main file
|
||||
files = src/test/main.c
|
||||
|
||||
# Source files
|
||||
files += src/*.c
|
||||
|
||||
# Header files
|
||||
files += include/*.h
|
||||
|
||||
main:
|
||||
@echo Compiling...
|
||||
cc $(files) -lm -o out/why2
|
39
README.md
Normal file
39
README.md
Normal file
@ -0,0 +1,39 @@
|
||||
# WHY2 Encryption System
|
||||
|
||||
*Yeah.*
|
||||
|
||||
This project is made 'like a library', so compiling is useless... :)
|
||||
|
||||
### Table of contents
|
||||
|
||||
- [Using in Your projects](#using-in-your-projects)
|
||||
- [Example of code](#example-of-code)
|
||||
- [Example programs](#example-programs)
|
||||
|
||||
## Using in Your projects
|
||||
|
||||
To **encrypt** text, use function `encryptText()` from file `include/encrypter.h`.
|
||||
|
||||
To **decrypt** text, use function `decryptText()` from file `include/decrypter.h`.
|
||||
|
||||
Jump to [examples](#examples) if you're not sure, how to use.
|
||||
|
||||
## Example of code
|
||||
|
||||
- Encryption:
|
||||
```c
|
||||
//FIRST VARIANT
|
||||
char *yourText = encryptText("Put here text, you want encrypt...", "tzXlZGxkhfYOvRthqokDrmGFyDMylgmeIlrJTpVAwuqrLjABXM"); //The second thing is Your **key**. (The key must be 50 characters long!)
|
||||
|
||||
//SECOND VARIANT
|
||||
char *yourText = encryptText("Put here text, you want encrypt...", NULL); //See? You don't have to use Your key. Program will automatically generate one for you. It will be printed out, so save it somewhere.
|
||||
```
|
||||
|
||||
- Decryption:
|
||||
```c
|
||||
char *yourText = decryptText("158.-83.9388.-14.57.8419.113.-98.10576", "tzXlZGxkhfYOvRthqokDrmGFyDMylgmeIlrJTpVAwuqrLjABXM"); //First parameter is Your encrypted text, the second is key you want to use for decryption it.
|
||||
```
|
||||
|
||||
## Example programs
|
||||
|
||||
Uhm... There aren't any examples (for now)... I will maybe create some... Later...
|
7
build.sh
Normal file
7
build.sh
Normal file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
make
|
||||
|
||||
if [ "$1" == "debug" ]; then
|
||||
./out/why2
|
||||
fi
|
6
include/decrypter.h
Normal file
6
include/decrypter.h
Normal file
@ -0,0 +1,6 @@
|
||||
#ifndef WHY2_DECRYPTER_H
|
||||
#define WHY2_DECRYPTER_H
|
||||
|
||||
char *decryptText(char *text, char *key); //TEXT from WILL BE DECRYPTED WITH KEY AND RETURNED
|
||||
|
||||
#endif
|
6
include/encrypter.h
Normal file
6
include/encrypter.h
Normal file
@ -0,0 +1,6 @@
|
||||
#ifndef WHY2_ENCRYPTER_H
|
||||
#define WHY2_ENCRYPTER_H
|
||||
|
||||
char *encryptText(char *text, char *keyNew); //TEXT from WILL BE ENCRYPTED WITH RANDOM PASSWORD [KEY] (WHICH WILL BE PRINTED OUT) AND RETURNED
|
||||
|
||||
#endif
|
10
include/flags.h
Normal file
10
include/flags.h
Normal file
@ -0,0 +1,10 @@
|
||||
#ifndef WHY2_FLAGS_H
|
||||
#define WHY2_FLAGS_H
|
||||
|
||||
#define KEY_LENGTH 50
|
||||
#define ENCRYPTION_SEPARATOR '.'
|
||||
#define ENCRYPTION_SEPARATOR_STRING "."
|
||||
|
||||
#define INVALID_KEY 1
|
||||
|
||||
#endif
|
103
src/decrypter.c
Normal file
103
src/decrypter.c
Normal file
@ -0,0 +1,103 @@
|
||||
#include "../include/decrypter.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../include/flags.h"
|
||||
|
||||
char*
|
||||
decryptText(char *text, char *key)
|
||||
{
|
||||
//CHECK FOR INVALID key
|
||||
if (strlen(key) != KEY_LENGTH)
|
||||
{
|
||||
fprintf(stderr, "Key must be 50 characters long!\n");
|
||||
exit(INVALID_KEY);
|
||||
}
|
||||
|
||||
//VARIABLES
|
||||
char *returningText;
|
||||
int numberBuffer;
|
||||
char *textBuffer;
|
||||
|
||||
numberBuffer = 1;
|
||||
|
||||
//GET LENGHT OF returningText AND textKeyChain
|
||||
for (int i = 0; i < strlen(text); i++)
|
||||
{
|
||||
if (text[i] == ENCRYPTION_SEPARATOR) numberBuffer++;
|
||||
}
|
||||
|
||||
//SET LENGTH
|
||||
returningText = malloc(numberBuffer);
|
||||
int textKeyChain[numberBuffer];
|
||||
int encryptedTextKeyChain[numberBuffer];
|
||||
|
||||
//LOAD textKeyChain
|
||||
for (int i = 0; i < (sizeof(textKeyChain) / sizeof(int)); i++)
|
||||
{
|
||||
numberBuffer = i;
|
||||
|
||||
//CHECK, IF numberBuffer ISN'T GREATER THAN KEY_LENGTH AND CUT UNUSED LENGTH
|
||||
while (numberBuffer >= KEY_LENGTH)
|
||||
{
|
||||
numberBuffer -= KEY_LENGTH;
|
||||
}
|
||||
|
||||
//FILL textKeyChain
|
||||
if ((numberBuffer + 1) % 3 == 0)
|
||||
{
|
||||
textKeyChain[i] = key[numberBuffer] * key[numberBuffer + 1];
|
||||
} else if ((numberBuffer + 1) % 2 == 0)
|
||||
{
|
||||
textKeyChain[i] = key[numberBuffer] - key[numberBuffer + 1];
|
||||
} else
|
||||
{
|
||||
textKeyChain[i] = key[numberBuffer] + key[numberBuffer + 1];
|
||||
}
|
||||
}
|
||||
|
||||
//LOAD encryptedTextKeyChain
|
||||
for (int i = 0; i < (sizeof(encryptedTextKeyChain) / sizeof(int)); i++)
|
||||
{
|
||||
numberBuffer = 0;
|
||||
|
||||
//GET LENGTH OF EACH CHARACTER
|
||||
for (int j = 0; j < strlen(text); j++)
|
||||
{
|
||||
if (text[j] == ENCRYPTION_SEPARATOR) break;
|
||||
|
||||
numberBuffer++;
|
||||
}
|
||||
|
||||
textBuffer = malloc(numberBuffer);
|
||||
|
||||
//LOAD textBuffer
|
||||
for (int j = 0; j < strlen(text); j++)
|
||||
{
|
||||
textBuffer[j] = text[j];
|
||||
|
||||
if (numberBuffer == j) break;
|
||||
}
|
||||
|
||||
encryptedTextKeyChain[i] = atoi(textBuffer);
|
||||
|
||||
text += numberBuffer + 1;
|
||||
free(textBuffer);
|
||||
}
|
||||
|
||||
//DECRYPT TEXT
|
||||
for (int i = 0; i < (sizeof(textKeyChain) / sizeof(int)); i++)
|
||||
{
|
||||
textKeyChain[i] -= encryptedTextKeyChain[i];
|
||||
}
|
||||
|
||||
//LOAD returningText
|
||||
for (int i = 0; i < sizeof(textKeyChain) / sizeof(int); i++)
|
||||
{
|
||||
returningText[i] = (char) textKeyChain[i];
|
||||
}
|
||||
|
||||
return returningText;
|
||||
}
|
123
src/encrypter.c
Normal file
123
src/encrypter.c
Normal file
@ -0,0 +1,123 @@
|
||||
#include "../include/encrypter.h"
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "../include/flags.h"
|
||||
|
||||
char*
|
||||
encryptText(char *text, char *keyNew)
|
||||
{
|
||||
srand(time(0)); //TRY TO MAKE RANDOM GENERATION REALLY "RANDOM"
|
||||
|
||||
//VARIABLES
|
||||
char *key = malloc(KEY_LENGTH);
|
||||
char *returningText;
|
||||
char *textBuffer;
|
||||
int textKeyChain[strlen(text)];
|
||||
int numberBuffer;
|
||||
|
||||
if (keyNew != NULL)
|
||||
{
|
||||
if (strlen(keyNew) != KEY_LENGTH)
|
||||
{
|
||||
fprintf(stderr, "Key must be 50 characters long!\n");
|
||||
exit(INVALID_KEY);
|
||||
}
|
||||
|
||||
strcpy(key, keyNew);
|
||||
|
||||
goto skipKey;
|
||||
}
|
||||
|
||||
//LOAD KEY
|
||||
for (int i = 0; i < KEY_LENGTH; i++)
|
||||
{
|
||||
//SET numberBuffer TO RANDOM NUMBER BETWEEN 0 AND 52
|
||||
numberBuffer = (rand() % 52) + 1;
|
||||
|
||||
//GET CHAR FROM numberBuffer
|
||||
if (numberBuffer > 26)
|
||||
{
|
||||
numberBuffer += 70;
|
||||
} else
|
||||
{
|
||||
numberBuffer += 64;
|
||||
}
|
||||
|
||||
key[i] = (char) numberBuffer;
|
||||
}
|
||||
|
||||
printf("Your key is: %s\n!!! SAVE IT SOMEWHERE !!!\n\n", key);
|
||||
|
||||
skipKey:
|
||||
|
||||
//LOAD textKeyChain
|
||||
for (int i = 0; i < (sizeof(textKeyChain) / sizeof(int)); i++)
|
||||
{
|
||||
numberBuffer = i;
|
||||
|
||||
//CHECK, IF numberBuffer ISN'T GREATER THAN KEY_LENGTH AND CUT UNUSED LENGTH
|
||||
while (numberBuffer >= KEY_LENGTH)
|
||||
{
|
||||
numberBuffer -= KEY_LENGTH;
|
||||
}
|
||||
|
||||
//FILL textKeyChain
|
||||
if ((numberBuffer + 1) % 3 == 0)
|
||||
{
|
||||
textKeyChain[i] = key[numberBuffer] * key[numberBuffer + 1];
|
||||
} else if ((numberBuffer + 1) % 2 == 0)
|
||||
{
|
||||
textKeyChain[i] = key[numberBuffer] - key[numberBuffer + 1];
|
||||
} else
|
||||
{
|
||||
textKeyChain[i] = key[numberBuffer] + key[numberBuffer + 1];
|
||||
}
|
||||
}
|
||||
|
||||
//ACTUALLY ENCRYPT TEXT
|
||||
for (int i = 0; i < strlen(text); i++)
|
||||
{
|
||||
textKeyChain[i] -= (int) text[i];
|
||||
}
|
||||
|
||||
numberBuffer = 0;
|
||||
|
||||
//COUNT REQUIRED SIZE FOR returningText
|
||||
for (int i = 0; i < (sizeof(textKeyChain) / sizeof(int)); i++)
|
||||
{
|
||||
numberBuffer += floor(log10(abs(textKeyChain[i]))) + 1;
|
||||
|
||||
//CHECK FOR MINUS
|
||||
if (textKeyChain[i] > 0) numberBuffer++;
|
||||
}
|
||||
|
||||
//ALLOCATE returningText (WITH THE SEPARATORS)
|
||||
returningText = malloc(numberBuffer + (sizeof(textKeyChain) / sizeof(int) - 1));
|
||||
|
||||
//LOAD returningText
|
||||
for (int i = 0; i < (sizeof(textKeyChain) / sizeof(int)); i++)
|
||||
{
|
||||
textBuffer = malloc(floor(log10(abs(textKeyChain[i]))));
|
||||
|
||||
sprintf(textBuffer, "%d", textKeyChain[i]);
|
||||
|
||||
strcat(returningText, textBuffer);
|
||||
|
||||
if (i != (sizeof(textKeyChain) / sizeof(int) - 1))
|
||||
{
|
||||
strcat(returningText, ENCRYPTION_SEPARATOR_STRING);
|
||||
}
|
||||
|
||||
free(textBuffer);
|
||||
}
|
||||
|
||||
//DEALLOCATION
|
||||
free(key);
|
||||
|
||||
return returningText;
|
||||
}
|
18
src/test/main.c
Normal file
18
src/test/main.c
Normal file
@ -0,0 +1,18 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "../../include/encrypter.h"
|
||||
#include "../../include/decrypter.h"
|
||||
|
||||
int
|
||||
main(int args, char *argv[])
|
||||
{
|
||||
char *text = encryptText("Pepa smrdí.", "dsadhagsdhuhasvbdzgavdgasvgzduasvgzdavdhbashudbuas");
|
||||
printf("%s\n", text);
|
||||
|
||||
text = decryptText(text, "dsadhagsdhuhasvbdzgavdgasvgzduasvgzdavdhbashudbuas");
|
||||
printf("%s\n", text);
|
||||
|
||||
free(text);
|
||||
return 0;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user