Guest User

Untitled

a guest
Jun 3rd, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.52 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. #define LEN(arr) ((int) (sizeof(arr) / sizeof(arr)[0]))
  6. #define MAX 80
  7. #define MAX_ENTRIES 2
  8.  
  9. struct passwd {
  10. char user[MAX];
  11. char password[MAX];
  12. };
  13.  
  14. typedef struct passwd Passwd;
  15.  
  16. static Passwd entries[MAX_ENTRIES];
  17. static int slot;
  18.  
  19. void has_slot()
  20. {
  21. if (slot == -1 ) {
  22. puts("No empty slot.");
  23. exit(1);
  24. }
  25. }
  26.  
  27. void exists(char *user)
  28. {
  29. slot = -1;
  30.  
  31. for (int i = LEN(entries) - 1; i >= 0; i--) {
  32. if (strcmp(entries[i].user, user) == 0) {
  33. puts("A password for user has already been created.");
  34. exit(1);
  35. }
  36. if (strlen(entries[i].user) == 0)
  37. slot = i;
  38. }
  39. }
  40.  
  41. char * decrypt(char *password)
  42. {
  43. int l = strlen(password);
  44.  
  45. while (*password != '\0') {
  46. *password -= 1;
  47. password++;
  48. }
  49.  
  50. return password - l;
  51. }
  52.  
  53. char * encrypt(char *password)
  54. {
  55. int l = strlen(password);
  56.  
  57. while (*password != '\0') {
  58. *password += 1;
  59. password++;
  60. }
  61.  
  62. return password - l;
  63. }
  64.  
  65. char * fill(char *password, int len)
  66. {
  67. int l = strlen(password);
  68.  
  69. if (len >= l) {
  70. for (password += l; l < len; l++, password++)
  71. *password = '?';
  72. } else {
  73. l = 0;
  74. }
  75.  
  76. *password = '\0';
  77.  
  78. return password - l;
  79. }
  80.  
  81. void create(char *user, char *password)
  82. {
  83. exists(user);
  84. has_slot();
  85.  
  86. strcpy(entries[slot].user, user);
  87. strcpy(entries[slot].password, encrypt(password));
  88. }
  89.  
  90. void get(char *user, char *password)
  91. {
  92. char password2[MAX];
  93.  
  94. printf("user: ");
  95. scanf("%s", user);
  96.  
  97. printf("password: ");
  98. scanf("%s", password);
  99.  
  100. printf("retype password: ");
  101. scanf("%s", password2);
  102.  
  103. if (strcmp(password, password2) != 0) {
  104. puts("Passwords are not equal.");
  105. exit(1);
  106. }
  107. }
  108.  
  109. void find_password(char *password)
  110. {
  111. int i;
  112. for (i = 0; i < LEN(entries); i++) {
  113. if (strcmp(entries[i].password, password) == 0) {
  114. printf("user: %s password: %s\n",
  115. entries[i].user,
  116. entries[i].password);
  117. break;
  118. }
  119. }
  120. }
  121.  
  122. int main()
  123. {
  124. // char user[MAX];
  125. // char password[MAX];
  126.  
  127. // get(user, password);
  128. // printf("scanned: %s\n", password);
  129. // create(user, password);
  130. // printf("encrypted: %s\n", entries[0].password);
  131. // printf("decrypted: %s\n", decrypt(entries[0].password));
  132.  
  133. // strcpy(user, "u");
  134. // strcpy(password, "abc");
  135. // create(user, password);
  136.  
  137. // printf("find %s …\n", password);
  138. // find_password(password);
  139.  
  140. // strcpy(user, "u");
  141. // strcpy(password, "abc");
  142. // create(user, password);
  143.  
  144. // strcpy(user, "user");
  145. // strcpy(password, "123456");
  146. // printf("<%s>\n", fill(password,10));
  147. // printf("<%s>\n", fill(password,-1));
  148. // printf("<%s>\n", fill(password,6));
  149.  
  150. return 0;
  151. }
  152.  
  153. // vim: set ft=c :
Add Comment
Please, Sign In to add comment