дисциплины: Информационные технологии в медицине
на тему: Защита медицинской информации
обучающегося: Ахмедова Л.З.
7 факультета 2 курса 24-ЛД-37/2 группы
по специальности: Лечебное дело
номер варианта: 1
дата выполнения: 23.06.26 г.
Для обеспечения безопасности доступа к личным данным сотрудников клиники в роли ответственного за безопасность информации напишите программу автоматической генерации логина и пароля для сотрудников клиники. Логин должен соответствовать фамилии и инициалам сотрудника, а пароль содержать буквенно-цифровой код длиной не менее 8 символов. Ниже приведен пример генерации кода для трех сотрудников.
#создаем список сотрудников
spisok <- c("Иванов И.И.","Петров П.П.","Сидоров С.С.")
#задаем эталон из которого будут выбираться символы для пароля
etalon <- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
len_s <- nchar(etalon)#определяем его длину
pass <- ""#создаем пустую строковую переменную для пароля
s_pass <- c()#создаем пустой список, к который будут складываться готовые пароли
for (i in spisok) {#создаем цикл, который переберет всех сотрудников
for (j in 1:8) {#создаем цикл, который повторит 8 раз выбор случайного символа из эталона, ПРИ РЕШЕНИИ САМОСТОЯТЕЛЬНОЙ ЗАДАЧИ ЗДЕСЬ НАДО ИЗМЕНИТЬ ДЛИНУ ЦИКЛА, СДЕЛАВ ЕГО ДЛЯ 6 СИМВОЛОВ
sluchaino <- sample(1:len_s,1)#случайно выбираем номер символа из эталонной последовательности
simbol <- substr(etalon, start = sluchaino, stop = sluchaino)#по этому случайному номеру копируем букву из эталонной последовательности
pass <- paste0(pass,simbol)#добавляем полученную букву в конец пароля
}#цикл создания пароля закончился и пошел на повторение для следующего сотрудника
#ПРИ РЕШЕНИИ САМОСТОЯТЕЛЬНОЙ ЗАДАЧИ СЮДА НАДО ДОБАВИТЬ КОД, КОТОРЫЙ БУДЕТ ДОБАВЛЯТЬ ОДНУ ЦИФРУ, А ЗАТЕМ ОДИН СПЕЦЗНАК В ПАРОЛЬ
s_pass <- c(s_pass,pass)#добавляем очередной пароль в список паролей
pass <- ""#очищаем переменную с паролем, чтобы начать создавать новый
}
ved <- data.frame(Login=spisok,Password=s_pass)#объединяем список сотрудников и список паролей в таблицу
ved#выводим таблицу на экран
## Login Password
## 1 Иванов И.И. fhPslGcL
## 2 Петров П.П. BlxHWNyA
## 3 Сидоров С.С. YmjTLhhV
Пароли, сделанные программой из предыдущего вопроса слишком простые для автоматических программ взлома. Для усложнения автоматического взлома пароль должен содержать строчные и заглавные буквы английского алфавита, не менее одной цифры и не менее одного специального знака (!#$%^&*).Чтобы добавить к паролю цифры и специальные знаки нужно сгенерировать пароль из шести символов, а затем программно добавить к нему дополнительно один случайный символ из набора цифр и еще один символ из набора спецзнаков.
Имеется список сотрудников клиники - 10 человек (Иванов И.И., Петров П.П., Светлова А.А., Сидоров С.С., Кузнецова В.В., Дергачева К.А., Балашова Д.К., Ильф И.Е., Знаменский В.О., Бендер О.И.). Сгенерируйте для них пароли из восьми символов, содержащие 6 букв английского алфавита (заглавных и строчных), не менее одной цифры и не менее одного специального знака.
# создаем список сотрудников
spisok <- c("Иванов И.И.", "Петров П.П.", "Светлова А.А.",
"Сидоров С.С.", "Кузнецова В.В.", "Дергачева К.А.",
"Балашова Д.К.", "Ильф И.Е.", "Знаменский В.О.",
"Бендер О.И.")
# задаем эталоны для генерации пароля
letters_etalon <- "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
digits_etalon <- "0123456789"
spec_etalon <- "!#$%^&*"
# определяем длины эталонов
len_letters <- nchar(letters_etalon)
len_digits <- nchar(digits_etalon)
len_spec <- nchar(spec_etalon)
# создаем пустой список для паролей
s_pass <- c()
# цикл по всем сотрудникам
for (i in spisok) {
# генерируем 6 букв (заглавных и строчных)
pass <- ""
for (j in 1:6) {
sluchaino <- sample(1:len_letters, 1)
simbol <- substr(letters_etalon, start = sluchaino, stop = sluchaino)
pass <- paste0(pass, simbol)
}
# добавляем одну случайную цифру
sluchaino <- sample(1:len_digits, 1)
simbol <- substr(digits_etalon, start = sluchaino, stop = sluchaino)
pass <- paste0(pass, simbol)
# добавляем один случайный спецзнак
sluchaino <- sample(1:len_spec, 1)
simbol <- substr(spec_etalon, start = sluchaino, stop = sluchaino)
pass <- paste0(pass, simbol)
# перемешиваем символы пароля для большей надежности
pass_chars <- strsplit(pass, "")[[1]]
pass <- paste(sample(pass_chars), collapse = "")
# добавляем пароль в список
s_pass <- c(s_pass, pass)
}
# создаем таблицу с логинами и паролями
ved <- data.frame(Login = spisok, Password = s_pass)
ved
## Login Password
## 1 Иванов И.И. Hxfi5Ww$
## 2 Петров П.П. iZ#rtU4i
## 3 Светлова А.А. 7CExUgl&
## 4 Сидоров С.С. 8k^dhUkg
## 5 Кузнецова В.В. TWUN#s7k
## 6 Дергачева К.А. 4zF$VGHx
## 7 Балашова Д.К. n1%bgcdW
## 8 Ильф И.Е. ^ehZEO8J
## 9 Знаменский В.О. C4gdUA*i
## 10 Бендер О.И. zH&7sqOD