MS Access VBA Заменяющий Шифр ​​Зашифровать / Расшифровать - PullRequest
9 голосов
/ 16 декабря 2011

Может кто-нибудь подсказать, пожалуйста, как мне добиться стиля шифра замещения; Функция шифрования и дешифрования в VBA. Я ценю, что хеширование считается лучшим способом, но мне нужно обратимое шифрование. Большое спасибо.

Ответы [ 3 ]

4 голосов
/ 16 декабря 2011

Вы можете использовать Blowfish . Существует версия Visual Basic 6, которая будет работать в Access, доступна здесь:

http://www.di -mgt.com.au / cryptoBlowfishVer6.html

Вы также можете попробовать TwoFish.

2 голосов
/ 17 декабря 2011

Большое спасибо за все ответы, представленные в связи с моим вопросом, приятно видеть, что есть разные подходы, это тот, который я кодировал вчера утром.Он позволяет использовать другое ключевое слово / фразу шифра как для заглавных, так и для строчных букв. В этом примере я использовал «зебры», также он выполняет второй проход с шифром ROT13.Метод шифрования:

Public Function Encrypt(strvalue As String) As String

Const LowerAlpha    As String = "abcdefghijklmnopqrstuvwxyz"
Const LowerSub      As String = "zebrascdfghijklmnopqtuvwxy" 'zebras
Const UpperAlpha    As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Const UpperSub      As String = "ZEBRASCDFGHIJKLMNOPQTUVWXY" 'ZEBRAS

Dim lngi            As Long
Dim lngE            As Long
Dim strEncrypt      As String
Dim strLetter       As String

If strvalue & "" = "" Then Exit Function

For lngi = 1 To Len(strvalue)

    strLetter = Mid(strvalue, lngi, 1)

    Select Case Asc(strLetter)

        Case 65 To 90 'Uppercase
            'Find position in alpha string
            For lngE = 1 To Len(UpperAlpha)
                If Mid(UpperAlpha, lngE, 1) = strLetter Then GoTo USub
            Next
USub:
            strEncrypt = strEncrypt & Mid(UpperSub, lngE, 1)

        Case 97 To 122 'Lowercase
            'Find position in alpha string
            For lngE = 1 To Len(LowerAlpha)
                If Mid(LowerAlpha, lngE, 1) = strLetter Then GoTo LSub
            Next
LSub:
            strEncrypt = strEncrypt & Mid(LowerSub, lngE, 1)

        Case Else 'Do not substitute

            strEncrypt = strEncrypt & strLetter

    End Select

Next

'Now pass this string through ROT13 for another tier of security

For lngi = 1 To Len(strEncrypt)
    Encrypt = Encrypt & Chr(Asc(Mid(strEncrypt, lngi, 1)) + 13)
Next

End Function

И это расшифровка, которая сопровождает его:

Public Function Decrypt(strvalue As String) As String

Const LowerAlpha    As String = "abcdefghijklmnopqrstuvwxyz"
Const LowerSub      As String = "zebrascdfghijklmnopqtuvwxy" 'zebras
Const UpperAlpha    As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Const UpperSub      As String = "ZEBRASCDFGHIJKLMNOPQTUVWXY" 'ZEBRAS

Dim lngi            As Long
Dim lngE            As Long
Dim strDecrypt      As String
Dim strLetter       As String

If strvalue & "" = "" Then Exit Function

'Reverse the ROT13 cipher

For lngi = 1 To Len(strvalue)
    strDecrypt = strDecrypt & Chr(Asc(Mid(strvalue, lngi, 1)) - 13)
Next

'Now reverse the encryption

For lngi = 1 To Len(strDecrypt)

    strLetter = Mid(strDecrypt, lngi, 1)

    Select Case Asc(strLetter)

        Case 65 To 90 'Uppercase
            'Find position in sub string
            For lngE = 1 To Len(UpperSub)
                If Mid(UpperSub, lngE, 1) = strLetter Then GoTo USub
            Next
USub:
            Decrypt = Decrypt & Mid(UpperAlpha, lngE, 1)

        Case 97 To 122 'Lowercase
            'Find position in sub string
            For lngE = 1 To Len(LowerSub)
                If Mid(LowerSub, lngE, 1) = strLetter Then GoTo LSub
            Next
LSub:
            Decrypt = Decrypt & Mid(LowerAlpha, lngE, 1)

        Case Else 'Do not substitute

            Decrypt = Decrypt & strLetter

    End Select

Next

End Function

Я надеюсь, что кодирование очень просто для тех, кто не имеет большого опыта работы с VBAкодирование и его можно снять прямо со страницы;но еще раз спасибо за все остальные ответы.

2 голосов
/ 16 декабря 2011

Здесь есть простой пример или вы можете использовать еще более простой шифр ROT13 .

Они полезны для маскировки небольшого текста, но я бы не стал использовать их для чего-то, что на самом деле нужно хранить в безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...