4.4.2. Подключение модуля защиты к программе на языке Visual Basic
Распишем шаги, которые наобходимо проделать, чтобы подключить COM модуль Uniprot к программе, написанной на Visual Basic.
Создайте новый или откройте уже существующий проект.
Создайте новую папку в каталоге с проекта или выберете уже существующую и скопируйте в нее необходимый для подключения библиотеки файл. Это файл: Uniprot.tlb.
Откройте диалог References. Для этого выбирете в меню пункт
Project->References.
Нажмите кнопку Browse.
Укажите файл Uniprot.tlb и откройте его.
Поставьте в списке галочку напротив появившейся строки Uniprot 1.0 Type Library и нажмите Ok.
Теперь вы можете работать с библиотекой COM например так.
Dim handle As Integer
Dim obj As New protect
Dim ver As Integer
Dim strInfo As String
obj.GetInfo ver, strInfo
Dim s As String
s = "Version:" + Str(ver / 256) + "." +
Str((ver Mod 256) / 16) + Str(ver Mod 16)
s = s + Chr(13) + "Info:" + strInfo
MsgBox s
Dim file As IProtectFile
Set file = obj
handle = file.Create(FileName, Default, cryptUPT)
4.4.3. Пример использования модуля защиты в программе на языке Visual Basic
Рассмотрим несколько демонстрационных программах. Представим, что у нас существует комплекс, состоящий из двух частей. Первая из которых предназначена для преподавателя, а другая – для студента. В дальнейшем будем называть их соответственно "АРМ преподавателя" и "АРМ студента". АРМ преподавателя предназначена для составления вопросов и просмотра результатов тестирования. А АРМ студента предназначена для контроля знаний. Естественно, примеры данных программ будут очень упрощены.
Для начала приведем текст программы АРМ преподавателя без использования защиты. На рисунке 8 показан ее пользовательский интерфейс.
Private Sub Edit_Click() orm1.ole_doc.DoVerb End Sub Private Sub Form_Load() Form1.ole_doc.Format = "Rich Text Format" End Sub Private Sub Load_Click() Open "c:\temp\temp.rtf" For Input As #1 Dim str, tmp Do While Not EOF(1) Input #1, tmp str = str + tmp Loop Close #1 Form1.ole_doc.DoVerb vbOLEDiscardUndoState Form1.ole_doc.DataText = str Form1.ole_doc.Update End Sub Private Sub Save_Click() Dim msg Form1.ole_doc.DoVerb vbOLEDiscardUndoState msg = Form1.ole_doc.DataText Open "c:\temp\temp.rtf" For Output As #1 Print #1, msg Close #1 End Sub Private Sub ViewResult_Click() Open "c:\temp\result.txt" For Input As #1 Dim n As Integer Input #1, n Close #1 result = n End Sub | Рисунок 8. Интерфейс АРМ преподавателя |
Итак, данная программа позволяет загрузить текст вопроса из файла, отредактировать его и опять сохранить. На практике, естественно, кроме этого должен существовать механизм генерации пакета программ и данных для студента. Т.е. в этот пакет, по всей видимости, должны входить АРМ студента, база данных и т.д. В нашем примере мы это опускаем и предполагаем, что сохраненный текст – все, что необходимо. Эта программа позволяет просмотреть файл с результатом тестирования по заданному вопросу. Это файл генерирует АРМ студента. Он представляет собой файл, в котором записано число – оценка за вопрос. Недостатки данной программы мы рассмотрим чуть ниже, когда познакомимся с АРМ студента. На рисунке 9 показан ее внешний вид.
Private Sub SaveResult(a) Open "c:\temp\result.txt" For Output As #1 Print #1, a Close #1 End End Sub Private Sub Command1_Click(Index As Integer) SaveResult (2) End Sub Private Sub Command2_Click() SaveResult (2) End Sub Private Sub Command3_Click() SaveResult (5) End Sub Private Sub Command4_Click() SaveResult (2) End Sub Private Sub Form_Load() Form1.ole_doc.Format = "Rich Text Format" Open "c:\temp\temp.rtf" For Input As #1 Dim str, tmp Do While Not EOF(1) Input #1, tmp str = str + tmp Loop Close #1 Form1.ole_doc.DoVerb vbOLEDiscardUndoState Form1.ole_doc.DataText = str Form1.ole_doc.Update End Sub | Рисунок 9. Интерфейс АРМ студента |
Как видно эта программа очень проста. Она просто выводит текст вопроса и ждет ответ. После чего записывает оценку в файл. На рисунке 10 показано, как выглядит файл с результатом.
Рисунок 10. Файл с незашифрованным результатом
Естественно, такая система не выдерживает никакой критики с точки зрения защиты. Во-первых, файл с вопросом представляет из себя простой RTF-файл. Конечно, если эти файлы будут храниться в защищенной базе, то проблем не возникнет. Мы же предполагаем, что пока они хранятся открыто. Предположим, что таких файлов много, и недопустимо, чтобы студент имел к ним доступ. Соответственно, это одно из мест, где потребуется модуль защиты. Второе, пожалуй, еще более важное место – это файл с результатом. На данный момент это просто текстовый файл, с числом, обозначающий оценку. Хранение результата в таком виде как просто, так и недопустимо.
Теперь, используя модуль зашиты, мы исправим перечисленные недостатки. Для начала покажем новый интерфейс пользователя и объясним изменения. Кнопки "Загрузить текст", "Сохранить текст" остались, но теперь программа будет работать с зашифрованными данными. Кнопка "Импорт старых данных" предназначена для чтения незашифрованного файл с вопросом.
Кнопка "Сгенерировать пакет" генерирует 4 алгоритма. Первая пара алгоритмов шифрования/расшифрования используется для записи/чтения файла с вопросом. При этом студенту достаточно отдать только файл с алгоритмом расшифрования. Вторая пара используется при работе с файлом, содержащим результат тестирования. Алгоритм шифрования предназначен для АРМ студента. Алгоритм расшифрования относится к АРМ преподавателя и служи для расшифрования этого файла. Передача студенту только некоторых алгоритмов повышает надежность защиты.
Новый интерфейс АРМ преподавателя изображен на рисунке 11.
Рисунок 11. Новый интерфейс АРМ преподавателя
Рассмотрим, какие изменения понадобилось внести в программу. Их совсем не много. Добавилась глобальная перемеренная obj. Она предназначена для взаимодействия с COM-модулем. Глобальной она быть совсем не обязана, просто это было сделано для краткости программы. Типом этой переменный является указатель на интерфейс IProtect. Но использовать этот интерфейс для шифрования/расшифрования не представляется возможным. Поэтому, в дальнейшем obj будем преобразовывать этот указатель к указателю на интерфейс IProtectFile.
Dim obj As New protect
Private Sub Edit_Click()
Form1.ole_doc.DoVerb
End Sub
Private Sub Form_Load()
Form1.ole_doc.Format = "Rich Text Format"
End Sub
Данная подпрограмма предназначена для генерации 4 алгоритмов шифрования/расшифрования. Для простоты она записываются во временную папку. Причем, генерируемые алгоритмы будут ограничены в использовании по времени. Файл "c:\temp\crypt.upt" и "c:\temp\decrypt.upt" предназначены для работы с файлом содержащим вопрос. Файл "c:\temp\cryptres.upt" и "c:\temp\decryptres.upt" предназначены для работы с фалом результата. Следовательно для работы АРМ-преподавателя необходимы файлы "c:\temp\crypt.upt" , "c:\temp\decrypt.upt" и "c:\temp\decryptres.upt". А для АРМ-студента необходимы файлы "c:\temp\decrypt.upt", "c:\temp\cryptres.upt".
Private Sub Generate_Click()
Dim days As Integer
days = DaysLimit
obj.GenerateTimeLimitUPTfiles "c:\temp\crypt.upt", "c:\temp\decrypt.upt", days
obj.GenerateTimeLimitUPTfiles "c:\temp\cryptres.upt", "c:\temp\decryptres.upt", days
End Sub
Эта подпрограмма фактически является старой подпрограммой загрузки файла с вопросом. Она служит для импорта данных в старом формате чтобы не набирать же вопрос заново.
Private Sub Import_Click()
Open "c:\temp\temp.rtf" For Input As #1
Dim str, tmp
Do While Not EOF(1)
Input #1, tmp
str = str + tmp
Loop
Close #1
Form1.ole_doc.DoVerb vbOLEDiscardUndoState
Form1.ole_doc.DataText = str
Form1.ole_doc.Update
End Sub
Вот новая подпрограмма чтения текста вопроса из файла. Дадим комментарии к некоторым строчкам.
Dim file As IProtectFile – объявляет указатель на интерфейс IProtectFile, который позволяет шифровать/расшифровывать файлы.
handle = file.Open("c:\temp\temp.dat", "c:\temp\decrypt.upt", "c:\temp\crypt.upt") – открываем файл с вопросом и сохраняем дескриптор открытого файла.
readSize = file.Read(handle, v) – читаем переменную типа Variant, которая на самом деле будет представлять из себя строку.
file.Close (handle) – закрывает файл.
Private Sub Load_Click()
Dim handle As Integer
Dim file As IProtectFile
Set file = obj
handle = file.Open("c:\temp\temp.dat", "c:\temp\decrypt.upt", "c:\temp\crypt.upt")
Dim readSize As Long
Dim v As Variant
readSize = file.Read(handle, v)
Dim str As String
str = v
Form1.ole_doc.DoVerb vbOLEDiscardUndoState
Form1.ole_doc.DataText = str
Form1.ole_doc.Update
file.Close (handle)
End Sub
Вот как теперь выглядит новая подпрограмма сохранения вопроса в файл.
Private Sub Save_Click()
Dim handle As Integer
Dim file As IProtectFile
Set file = obj
handle = file.Create("c:\temp\temp.dat", Default, "c:\temp\crypt.upt")
Dim writeSize As Long
Dim v As Variant
Dim str As String
str = Form1.ole_doc.DataText
v = str
writeSize = file.Write(handle, v)
file.Close (handle)
End Sub
И последнее, это новая подпрограмма чтения файлов с результатом тестирования.
Private Sub ViewResult_Click()
Dim handle As Integer
Dim file As IProtectFile
Set file = obj
handle = file.Open("c:\temp\result.dat", "c:\temp\decryptres.upt", "c:\temp\cryptres.upt")
Dim readSize As Long
Dim v As Variant
readSize = file.Read(handle, v)
Dim str As String
result = v
file.Close (handle)
End Sub
Внешний вид АРМ студента не изменился. Приведем только текст программы.
Dim obj As New protect
Private Sub SaveResult(a)
Dim handle As Integer
Dim file As IProtectFile
Set file = obj
handle = file.Create("c:\temp\result.dat", Default, "c:\temp\cryptres.upt")
Dim writeSize As Long
Dim v As Variant
Dim str As String
str = Form1.ole_doc.DataText
v = a
writeSize = file.Write(handle, v)
file.Close (handle)
End
End Sub
Private Sub Command1_Click(Index As Integer)
SaveResult (2)
End Sub
Private Sub Command2_Click()
SaveResult (2)
End Sub
Private Sub Command3_Click()
SaveResult (5)
End Sub
Private Sub Command4_Click()
SaveResult (2)
End Sub
Private Sub Form_Load()
Form1.ole_doc.Format = "Rich Text Format"
Dim handle As Integer
Dim file As IProtectFile
Set file = obj
handle = file.Open("c:\temp\temp.dat", "c:\temp\decrypt.upt", "c:\temp\crypt.upt")
Dim readSize As Long
Dim v As Variant
readSize = file.Read(handle, v)
Dim str As String
str = v
Form1.ole_doc.DoVerb vbOLEDiscardUndoState
Form1.ole_doc.DataText = str
Form1.ole_doc.Update
file.Close (handle)
End Sub
Для примера на рисунке 12 приведен пример зашифрованного файла с результатом тестирования. Теперь понять, что в нем хранится, стало сложным делом.
Рисунок 12. Файл с зашифрованным результатом
... техники (высокая тактовая частота) применение программных методов также достаточно эффективно и очень часто применяется в средствах вычислительной техники наряду с другими программными средствами защиты информации. Применение криптографических методов в рамках сетевых протоколов позволяет также решать отдельные задачи других направлений обеспечения безопасности. При этом, эти средства могут не ...
... для реализации системы бюджетирования Консультационной группы "Воронов и Максимов". Статья о проблемах выбора системы бюджетирования - в проекте "УПРАВЛЕНИЕ 3000". Бюджетный автомат Если вы решитесь на автоматизацию системы бюджетирования компании, перед вами сразу встанут вопросы: что выбрать, сколько платить, как внедрять. Примеряйте! О ЧЕМ РЕЧЬ В “Капитале” на стр. 44, 45 мы рассказали ...
... проблема, как признание отечественных дипломов за границей, возможность трудоустройства и дальнейшего обучения выпускников ВУЗов в других странах. Таким образом, исследование основных направлений в тенденциях развития высшего образования в Украине и ориентация его на зарубежный опыт является достаточно актуальной темой в сфере развития образовательного процесса в нашей стране. 1. Особенности ...
... отношения к ситуации в образовательном процессе. Именно с этой целью в школе было решено ввести так называемое профильное обучение в старших классах, предусматривающей организацию профильного и предпрофильного обучения по социально-гуманитарному, физико-математическому и общеобразовательному направлениям. Последний призван обеспечить более глубокую универсальную подготовку тем старшеклассникам, ...
0 комментариев