20960

ПАРОЛЬНИЙ ЗАХИСТ

Практическая работа

Информатика, кибернетика и программирование

Текст програми include iostream include fstream include conio.h include string include iomanip include windows.h using namespace std; string decrypt string str { for unsigned int i=0; i str.size; i if str[i]=' ' str[i]=charabsshortstr[i]255; return str; } string encrypt string str { for unsigned int i=0; i str.

Украинкский

2013-08-01

101 KB

5 чел.

Родін С КІТ-39

Практична робота №1-8

ПАРОЛЬНИЙ ЗАХИСТ    

 

Ціль роботи:  вивчення принципів організації парольного захисту програм, ознайомлення з видами паролів, реалізація парольного захисту.  

 

Завдання:

Пароль - це код, використовуваний для одержання доступу до систем або файлів, оснащених парольним захистом. Паролі забезпечують збереження цілісності програмного забезпечення в складі обчислювальної системи, але для підтримки паролів потрібна висока дисциплінованість. При першій реєстрації користувача адміністратор визначає коло повноважень для одержання й зміни інформації або виконання певних керуючих дій у системі, керуючись його професійними обов'язками й посадовими інструкціями. Потім користувачеві прелагается ввести свій пароль згідно із правилами, прийнятими в даній системі.  Метод паролів вимагає, щоб пароль, що вводиться користувачем (рядок символів) рівнявся з тим, який зберігається в обчислювальній системі для даного користувача. Якщо пароль вірний, система повинна вивести на екран термінала дату й час останнього входу в систему цього користувача. Потім користувачеві надається можливість користуватися всією інформацією, доступ до якої йому дозволений (паролі можна також використовувати незалежно від користувача для захисту файлів, записів, полів даних усередині записів і т.д.).

Вибірка символів

Використання як пароль окремих символів умовного слова (наприклад, 1 і 5 буква) запобігає ситуації, коли ціле слово може бути випадково почуте. Запитувані символи пароля змінюються при кожній новій спробі доступу. Позиції запитуваних символів можна одержати за допомогою деякої процедури перетворення, прив'язаної до показань годин ЕОМ або виробити генератором псевдовипадкових чисел. Однак пароль слід змінювати досить часто, оскільки він може бути складений  з окремих символів.

Текст програми

#include <iostream>

#include <fstream>

#include <conio.h>

#include <string>

#include <iomanip>

#include <windows.h>

#include <stdlib.h>

#include <time.h>

using namespace std;

string decrypt (string str) {

for (unsigned int i=0; i<str.size(); i++)

 if (str[i]!=' ')

  str[i]=(char)abs((short)str[i]-255);

return str;

}

string encrypt (string str) {

for (unsigned int i=0; i<str.size(); i++)

 if (str[i]!=' ')

  str[i]=(char)(255-(short)str[i]);

return str;

}

int showUsers () {

string tmp;

short count=0;

ifstream in;

try {

 in.open("Encrypt.bin", ios::app);

 if (!in.is_open())

  throw -1;

} catch (int i) {

 cout<<"Error occurred during opening file. Data can't be saved."

  <<endl;

 _getch();

 return 0;

 cout<<endl;

}

cout<<setw(10)

 <<"Name"

 <<setw(11)

 <<"Password";

while (!in.eof()) {

 in>>tmp;

 tmp=decrypt(tmp);

 if (count%2==0)

  cout<<endl;

 cout<<setw(10)

  <<tmp

  <<" ";

  

 count++;

}

in.close();

return 0;

}

int save (string str) {

ofstream out;

try {

 out.open("Encrypt.bin", ios::app);

 if (!out.is_open())

  throw -1;

} catch (int i) {

 cout<<"Error occurred during opening file. Data can't be saved."

  <<endl;

 _getch();

 return -1;

 cout<<endl;

}

str=encrypt(str);

out<<str;

out.close();

return 0;

}

int signIn () {

string str_name, str_pass, tmp, tmp1;

int idx1,idx2,idx3;

short count=0;

ifstream in;

try {

 in.open("Encrypt.bin", ios::app);

 if (!in.is_open())

  throw -1;

} catch (int i) {

 cout<<"Error occurred during opening file. Data can't be saved."

  <<endl;

 _getch();

 return 0;

 cout<<endl;

}

while (count<3) {

 cout<<"You have "

  <<3-count

  <<" more attempt."

  <<endl

  <<"Enter your name: ";

 cin>>str_name;

 str_name=encrypt(str_name);  

 //str_pass=encrypt(str_pass);

 in>>tmp;

 while ((str_name!=tmp)&&(!in.eof()))  in>>tmp;

 if (str_name!=tmp) {

  cout<<"No such user found."

   <<endl;

  _getch();

  system("cls");

  count++;

  continue;

 }

 in>>tmp;

 tmp=decrypt(tmp);

 idx1=rand()% tmp.length();

 do idx2=rand()% tmp.length(); while(idx2==idx1);

 do idx3=rand()% tmp.length(); while((idx3==idx1)&&(idx3==idx2));

 cout<<"Enter "<<idx1+1<<"st, "<<idx2+1<<"st, "<<idx3+1<<"st symbols from your fhrase-password: ";

 cin>>str_pass;

 //cout<<"tmp: "<<tmp;

 tmp1=tmp.substr(idx1,1);  

 tmp1+=tmp.substr(idx2,1);

 tmp1+=tmp.substr(idx3,1);

 //cout<<"tmp1: "<<tmp1;

 if (str_pass!=tmp1) {

  cout<<"Password incorrect!"

   <<endl;

  _getch();

  system("cls");

  count++;

  continue;

 }

 cout<<"Authorization complete."

  <<endl;

 in.close();

 _getch();

 return 0;

}

cout<<"Terminal blocked for 7 sec"

 <<endl;

for (int i=0; i<14; i++) {

 if (i%4==0) {

  system("cls");

  cout<<"Terminal blocked for 7 sec"

   <<endl;

 }

 cout<<". ";

 Sleep(500);

}

return -1;

}

int logIn () {

string str, str1;

cout<<"Enter your name: ";

cin>>str;

str.push_back(' ');

save(str);

do{

 cout<<"Enter your phrase: ";

 cin>>str;

cout<<"Repeat your phrase: ";

cin>>str1;

if(str!=str1) cout<<"Phrases don't matched!";

}

while(str!=str1);

str.push_back(' ');

save(str);

str.erase();

cout<<"Registration finished.";

return 0;

}

int main () {

srand(time(NULL));

string c ;

int flag=-1;

for (;;) {

 if (flag!=0)

  cout<<"<S>ign in"

  <<endl

  <<"<L>og in"

  <<endl

  <<"<E>xit"

  <<endl;

 else

  cout<<"<S>ign in"

  <<endl

  <<"<L>og in"

  <<endl

  //<<"<D>isplay all users:)"

  //<<endl

  <<"<E>xit"

  <<endl;

 c=_getch();

 switch (c[0]) {

 case 'S':

 case 's':

  system("cls");

  flag=signIn();

  break;

 case 'L':

 case 'l':

  system("cls");

  logIn();

  _getch();

  break;

 case 'D':

 case 'd':

  system("cls");

  showUsers();

  _getch();

  break;

 case 'E':

 case 'e':

 case (char)27:

  system("cls");

  return 0;

 }

 system("cls");

}

return 0;

}

Результати роботи зображені на рисунках 1-4:

Висновки

Виконавши практичну роботу, вивчила принципи організації парольного захисту програм, ознайомилася з видами паролів, реалізацією парольного захисту.


 

А также другие работы, которые могут Вас заинтересовать

11816. Шприцевание резиновых смесей 109 KB
  Лабораторная работа № Шприцевание резиновых смесей Цель работы Получение заготовок определенного профиля путем продавливания разогретой резиновой смеси с помощью червяка через профилирующее отверстие и определение усадки. Теоретическая часть Шприцев
11817. Визначення вологості ґрунту 353.5 KB
  ЛАБОРАТОРНА РОБОТА Визначення вологості ґрунту Вологістю називається відношення маси води яка знаходиться в грунті до маси абсолютно сухого ґрунту в даному об’ємі. Кількість води яка міститься в порах ґрунту в природніх умовах залягання називається природною воло...
11818. Проектирование на ПЛИС 1.77 MB
  Бутов А.С. Учебноеметодическое пособие для самостоятельной работы По курсу Проектирование на ПЛИС Содержание Аннотация Введение.. ...
11819. ВИЗНАЧЕННЯ ОБ’ЄМНОЇ ВАГИ ҐРУНТУ МЕТОДОМ РІЖУЧОГО КІЛЬЦЯ 96.5 KB
  Визначення об’ємної ваги ґрунту методом ріжучого кільця Об’ємною вагою ґрунту називають вагу одиниці об’єму ґрунту в його природному стані. Об’ємна вага ґрунту без порушення його природного складу в даній роботі встановлюється шляхом визначення ваги ґрунту в відом
11820. Розрахунок осідання фундамента 208.5 KB
  Розрахунок осідання фундамента Визначити методом пошарового сумування осідання стовпчастого фундаменту. Вихідні дані: Нормативне навантаження від колони Nn= 1200кН. Глибина закладання фундаменту d= 1.5м. Товщина рослинного шару h1=0.3м. γ1=175кН/м3 товщина шару супіс
11821. Интегрированная среда разработки Microsoft Visual C++ 2008. Создание простейшего приложения 421.5 KB
  Лабораторная работа №1. Интегрированная среда разработки Microsoft Visual C 2008. Создание простейшего приложения 1 Цель и порядок работы Цель работы – ознакомиться со средой разработки Microsoft Visual C 2008 научиться создавать компилировать и отлаживать приложения разобра
11822. Проектирование программ линейной структуры 261 KB
  Лабораторная работа №2. Проектирование программ линейной структуры 1 Цель и порядок работы Цель работы – изучить структуру программы на языке C операторы присваивания ввода и вывода данных используемые при составлении программ линейной структуры. Порядок вып...
11823. Операторы ветвления и выбора 148.5 KB
  Лабораторная работа №3. Операторы ветвления и выбора 1 Цель и порядок работы Цель работы – изучить операторы используемые для организации ветвления в программе. Познакомится с логическими выражениями и операциями. Порядок выполнения работы: ознакомиться с...
11824. Операторы цикла и передачи управления 110 KB
  Лабораторная работа №4. Операторы цикла и передачи управления 1 Цель и порядок работы Цель работы – изучить операторы используемые при организации программ циклических вычислительных процессов получить практические навыки в составлении программ. Порядок выпо...