diff --git a/commands.txt b/commands.txt index d1d7bf4..ad4f00c 100644 --- a/commands.txt +++ b/commands.txt @@ -1,3 +1,3 @@ -./vipre-cryptor --sig database.sig -./vipre-cryptor --create-user my_usr.bin database.sig -f example.txt -./vipre-cryptor --user my_usr.bin database.sig -f example_out.txt +./vipre-cryptor --sig key_file.sig +./vipre-cryptor --create-user user_name.bin key_file.sig -f example.txt +./vipre-cryptor --user user_name.bin key_file.sig -f example_out.txt diff --git a/database.sig b/database.sig deleted file mode 100644 index 93e05e6..0000000 Binary files a/database.sig and /dev/null differ diff --git a/key.sig b/key.sig new file mode 100644 index 0000000..2eed4df Binary files /dev/null and b/key.sig differ diff --git a/my_usr.bin b/my_usr.bin deleted file mode 100644 index 9600f0b..0000000 --- a/my_usr.bin +++ /dev/null @@ -1,3 +0,0 @@ -admin -00000000 -‹ο‹y‹ ‹“‹Ž‹¬šV‹J‹`š5Œλλλλ‹»λ‹ελ‹v‹Ž‹“šΟ‹—‹—λ~λšΟ‹“‹Ž‹—‹ε‹yTŒλλλλ‹»λ‹ ‹y‹`‹yλ‹`‹y‹ ‹yTŒλλλλ‹»λ‹ ‹“šΟλ‹J‹Žλš'‹`‹—‹Žλ~λ‹θšVš5šΟ‹yλšΟš5šVλ‹θλ‹Ž‹—‹`š'λ‹Ž‹JšΟ‹“‹ ‹yTλΕ‹4Tλ‹2‹y‹3‹“šά‹θ‹“‹ϊŒ \ No newline at end of file diff --git a/user.bin b/user.bin new file mode 100644 index 0000000..aaa94e7 --- /dev/null +++ b/user.bin @@ -0,0 +1,3 @@ +admin +1234 +Ν–ZŽ5–τ*$–€* –ρ[iρ–Aρ–•ρ–eί›£ήϋ[dρ£ήŽ5–Ν–ρ[iρ–Aρ–ZUš–Ωρ–€U–Ωτiρ[i|iΈ›£ή•[–ρ£Ίc–ρi/ω»£o*ZΝ[ω £o*$i/iί–€*iί£ήŽ–Ωτ[­Tρ–γU –*όž–jA \ No newline at end of file diff --git a/vipre-cryptor b/vipre-cryptor index d5940d0..c8379eb 100755 Binary files a/vipre-cryptor and b/vipre-cryptor differ diff --git a/vipre-manager.h b/vipre-manager.h index a090346..86f2c28 100644 --- a/vipre-manager.h +++ b/vipre-manager.h @@ -78,7 +78,7 @@ unsigned int __generate_hash(char* str) { size_t max = strlen(str); while (pos < max) { ret += (unsigned char)str[pos]; - if (ret > 65000) ret = 0; + if (ret > 65000) ret = ret / 10; pos ++; } if (ret == 0) ret ++; @@ -94,6 +94,25 @@ signed short int __find_arr_index(char val, char* arr, size_t len) { return -1; } +void __refresh_dt(char* arr, size_t sz) { + sz --; + char save_dt = arr[sz]; + unsigned int pos = sz - 1; + while (true) { + arr[pos + 1] = arr[pos]; + if (pos) pos --; + else break; + } + arr[0] = save_dt; +} + +void __refresh_data(char* arr, size_t sz, unsigned int to) { + while (to != 0) { + __refresh_dt(arr, sz); + to --; + } +} + int __create_sig(char* file) { size_t arr_len = abs(CHAR_MIN) + abs(CHAR_MAX) + 1; char* arr = (char*)malloc(arr_len * sizeof(char)); @@ -156,6 +175,7 @@ int __create_user(char* file, char* user_file, char* cry_file) { password[cnt] = c; cnt ++; } + size_t cnt_save = cnt; password[cnt] = '\0'; fputs("Repeat password: ", stdout); cnt = 0; @@ -167,6 +187,11 @@ int __create_user(char* file, char* user_file, char* cry_file) { } cnt ++; } + if (cnt != cnt_save) { + puts("\033[1mvipre-cryptor: \033[91mThe password was repeated incorrectly!\033[0m"); + free(arr); + return EXIT_FAILURE; + } fputs(user_login, wp); putc('\n', wp); fputs(password, wp); putc('\n', wp); fseek(fw, 0, SEEK_END); @@ -177,6 +202,7 @@ int __create_user(char* file, char* user_file, char* cry_file) { c = (char)getc(fw); c = arr[(unsigned char)c]; putc(c, wp); + __refresh_data(arr, arr_len, abs(arr[0])); count ++; } free(arr); @@ -224,6 +250,7 @@ int __read_user(char* file, char* user_file, char* cry_file) { while (pos < data_size) { c = getc(up); c = __find_arr_index(c, arr, arr_len); + __refresh_data(arr, arr_len, abs(arr[0])); putc(c, fw); pos ++; }