Создать программное средство криптографической защиты данных - VB
Формулировка задачи:
В среде программирования Visual Basic создайте программное средство криптографической защиты данных.
Программное средство предназначено для использования в качестве компонента специального программного обеспечения на машинах конечных пользователей.
Достаточно эффективным средством повышения стойкости шифрования является комбинированное использование нескольких различных способов шифрования, т.е. последовательное шифрование исходного текста с помощью двух или более методов.
Разработанный программный компонент должен выполнять функции шифрования и расшифровки текста комбинацией двух разных из нижеуказанных методов.
Метод 1
Шифр Атбаш
Шифр Атбаш -шифр простой замены, использованный для еврейского алфавита и получивший оттуда свое название. Шифрование происходит заменой первой буквы алфавита на последнюю, второй на предпоследнюю. Знание шифра Атбаш приходит на помощь героям фильма Код да Винчи (фильм) — Роберту Лэнгдону, Софи Невё и Ли Тибингу, когда они берутся разгадать смысл стихотворной строки — «…атбаш правду высветит, как луч». По сюжету выясняется, что с помощью шифра Атбаш было зашифровано слово «Бафомет», помогающее отгадать слово «София». Это не случайно, поскольку героиню романа Дэна Брауна зовут Софи Невё.
Шифр Атбаш для английского алфавита:
Исходный алфавит: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Алфавит замены: Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
Метод 2
Шифрование методом гаммирования
Суть метода состоит в том, что символы шифруемого текста последовательно складываются с символами некоторой специальной последовательности, называемой гаммой. Иногда такой метод представляют как наложение гаммы на исходный текст, поэтому он получил название "гаммирование".
Наложение гаммы можно осуществить несколькими способами, например по формуле
tш = tо XOR tг , где tш, tо, tг - ASCII коды соответственно зашифрованного символа, исходного символа и гаммы, XOR - побитовая операция "исключающее или".
Расшифрование текста проводится по той же формуле: tо = tш XOR tг .
Последовательность гаммы формировать с помощью линейного конгруэнтного генератора псевдослучайных чисел псевдослучайных чисел (ПСЧ).
Решение задачи: «Создать программное средство криптографической защиты данных»
textual
Листинг программы
Option Explicit Dim dPRNG# Private Function PRNGFor7Bit(Optional ByVal seed As Double, Optional _ da As Double = 1664525, Optional dc As Double = 1013904223 _ , Optional dm As Double = 4294967296#) As Long Dim d# If seed = 0 Then seed = dPRNG d = da * seed + dc dPRNG = d - Fix(d / dm) * dm PRNGFor7Bit = Fix(dPRNG / (dm - 1) * 127) End Function Sub Encrypt(sSourcefile As String) On Error GoTo OnErr Dim sEncryptedFile$ Dim iInputFile&, iOutputFile&, i& Dim bSource() As Byte dPRNG = 10000 If Dir(sSourcefile) = "" Then MsgBox sSourcefile & " not exists": Exit Sub i = InStrRev(sSourcefile, ".") sEncryptedFile = Left(sSourcefile, i - 1) & "_encrypted" & Right(sSourcefile, Len(sSourcefile) - i + 1) If Dir(sEncryptedFile) <> "" Then Kill sEncryptedFile iOutputFile = FreeFile Open sEncryptedFile For Binary As #iOutputFile iInputFile = FreeFile Open sSourcefile For Binary As #iInputFile ReDim bSource(1 To LOF(iInputFile)) Get #iInputFile, , bSource For i = 1 To UBound(bSource) Select Case bSource(i) Case 97 To 122 bSource(i) = Atbash(bSource(i), 219) Case 65 To 90 bSource(i) = Atbash(bSource(i), 155) End Select bSource(i) = GammaXOR(bSource(i), PRNGFor7Bit) Next i Put #iOutputFile, , bSource Close #iInputFile Close #iOutputFile Exit Sub OnErr: Close MsgBox "Error" End Sub Private Function Atbash(Char As Byte, Number As Byte) As Byte Atbash = Number - Char End Function Private Function GammaXOR(Char As Byte, Gamma As Long) As Byte GammaXOR = Char Xor Gamma End Function Sub Decrypt(sSourcefile As String) On Error GoTo OnErr Dim sDecryptedFile$ Dim iInputFile&, iOutputFile&, i& Dim bSource() As Byte dPRNG = 10000 If Dir(sSourcefile) = "" Then MsgBox sSourcefile & " not exists": Exit Sub i = InStrRev(sSourcefile, ".") sDecryptedFile = Left(sSourcefile, i - 1) & "_decrypted" & Right(sSourcefile, Len(sSourcefile) - i + 1) If Dir(sDecryptedFile) <> "" Then Kill sDecryptedFile iOutputFile = FreeFile Open sDecryptedFile For Binary As #iOutputFile iInputFile = FreeFile Open sSourcefile For Binary As #iInputFile ReDim bSource(1 To LOF(iInputFile)) Get #iInputFile, , bSource For i = 1 To UBound(bSource) bSource(i) = GammaXOR(bSource(i), PRNGFor7Bit) Select Case bSource(i) Case 97 To 122 bSource(i) = Atbash(bSource(i), 219) Case 65 To 90 bSource(i) = Atbash(bSource(i), 155) End Select Next i Put #iOutputFile, , bSource Close #iInputFile Close #iOutputFile Exit Sub OnErr: Close MsgBox "Error" End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д