Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C_Kurs_Lekt / C_III_семестр / 15_password_example

.pdf
Скачиваний:
11
Добавлен:
13.02.2016
Размер:
46.15 Кб
Скачать

#include <stdio.h> #include <conio.h> #include <dos.h> #include <string.h>

int password(void);

int main()

{

password(); return 0;

}

//=================================================================== int password(void)

{

char pass[10]={0}; int i;

clrscr();

printf("Введите пароль: "); i=0;

fflush(stdin); while((pass[i]=getch())!='\r') {

printf("*");

i++;

fflush(stdin);

}

if( strcmp(pass,"Alla\r")!=0) { printf("\n\n Пароль неверный"); delay(1000);

return 0;

}

return 1;

}

#include <stdio.h> #include <conio.h> #include <dos.h> #include <string.h>

int password(void );

int main()

{// Пример простой защиты программы.

//Требуют ввода пароля для запуска //============================================

//В реальной программе этот фрагмент необходимо исключить.

//Данный фрагмент помогает "зашифровать пароль"

unsigned char spass[]="pasw1\r"; // фраза-пароль + '\r'-Enter int i=0;

clrscr();

printf( "\nparol: %s\n => в ASCII кодах:",spass); while (i< strlen(spass)) printf(" %3d", spass[i++]);

//

printf( "\n\"шифруем\" - поразрядное исключающее или (^)\n"); i=0; while (i< strlen(spass)) spass[i]= spass[i++]^130; printf( "\nsecret parol: %s\n => в ASCII кодах:",spass);

i=0; while (i< strlen(spass)) printf(" %3d", spass[i++]); // проверка "расшифровки" пароля

printf( "\n\n\"обратное преобразование\"" " - поразрядное исключающее или (^)\n");

i=0;

while

(i<

strlen(spass))

spass[i]= spass[i++]^130;

printf( "desecret parol: %s\n => в ASCII кодах:",spass);

i=0;

while

(i<

strlen(spass))

printf(" %3d", spass[i++]);

getch();

 

 

 

 

//конец фрагмента //================================================================

if( password() ) { clrscr();

printf ("Все попытки ввода пароля оказались неудачными\n" ); printf ("До свидания ... \n");

getch(); return 1 ;

}

clrscr();

printf ("Вы правильно ввели пароль, продолжаем работать ... \n"); getch();

return 0;

}

//=== Функция ввода пароля возвращает: 1 - пароль введен неверно

//

0 - в противном случае

int password(void)

{

 

unsigned char

pass_ori[6]={242, 227, 241, 245, 179, 143};

unsigned char

pass[10]={0}; // максимальная длина пароля

int popitka =

3;// счетчик попыток ввода пароля

int i, x, y;

 

x=30; y=10; //координаты ввода пароля

clrscr();

 

while (popitka--) {

 

_setcursortype(_NORMALCURSOR);

 

gotoxy(x, y);

 

printf("

");

gotoxy(x, y);

 

printf("Введите пароль: ");

 

i=0;

 

fflush(stdin);

 

while((pass[i]=getch())!='\r') {

 

pass[i]=pass[i]^130;

 

printf("*");

 

i++;

 

fflush(stdin);

 

}

 

pass[i]=pass[i]^130;

 

if( strcmp(pass, pass_ori)!=0) {

 

_setcursortype(_NOCURSOR);

 

gotoxy(x,y);

 

printf("Пароль введен не верно

");

delay(300);

 

if (popitka) {

 

gotoxy(x,y+3);

 

printf("Повторите еще раз

");

gotoxy(x,y+4);

 

printf("У Вас осталось %1d попытки", popitka); getch();

}

else { break;

} // end if (popitka)

}

else { // if strcmp т.е. если пароли совпали _setcursortype(_NORMALCURSOR);

return 0;

}

} // end while (popitka--) _setcursortype(_NORMALCURSOR); return 1;

}

ПРИМЕР работы с программой: parol: pasw1

=> в ASCII кодах: 112 97 115 119 49 13 "шифруем" - поразрядное исключающее или (^)

secret parol: Єуёї│П

=> в ASCII кодах: 242 227 241 245 179 143

"обратное преобразование" - поразрядное исключающее или (^) desecret parol: pasw1

=> в ASCII кодах: 112 97 115 119 49 13

Соседние файлы в папке C_III_семестр