Создать программное средство криптографической защиты данных - 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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.571 из 5
Похожие ответы