Шифр Виженера для защиты данных в Excel
Добрый день, уважаемые читатели и подписчики блога! Сегодня мы поговорим о шифрах.
Что такое шифры - очень хороший вопрос! В обычном понимании это система преобразований, которая зависит от некоего секретного параметра (ключа) и которая необходима для секретной передачи информации.
Как часто нам нужно скрыть данные в таблицах Excel - ответ очевиден. Скрывать ячейки, менять их форматы, защищать паролем - средства проверенные, но крайне ненадёжные. А что если злоумышленник увидит вместо таблицы непонятный набор символов, некую "абракадабру"? Это остановит (пусть и на какое-то время) даже профессионала своего дела.
ATTACKATDOWN
Ключ:
LEMON
Таким образом, я достраиваю длину ключа до полного совпадения количества символов (LEMONLEMONLE).
На пересечении первой буквы ключа и фразы получится отображаемый символ.
Сложность взлома (криптоанализа) будет заключаться только в одном - поиске длины ключа. В наше время шифр считается слабым ввиду появления алгоритмов атаки Фридмана и Касиски.
Для неискушённых пользователей (я в их числе) самое оно!
Sub Encrypt()
Dim Pass$, Key$
Pass = InputBox("Введите ключ для шифрования:")
Key = WorksheetFunction.Rept(Pass, 100)
For Each cell In ActiveSheet.UsedRange
Out = ""
Txt = cell.Formula
For i = 1 To Len(Txt)
Out = Out & Chr((Asc(Mid(Txt, i, 1)) + Asc(Mid(Key, i, 1))) Mod 256)
Next i
cell.Value = Out
Next cell
End Sub
'Дешифрация текущего листа
Sub Decrypt()
Dim Pass$, Key$
Pass = InputBox("Введите ключ для расшифровки:")
Key = WorksheetFunction.Rept(Pass, 100)
For Each cell In ActiveSheet.UsedRange
Out = ""
Txt = cell.Value
For i = 1 To Len(Txt)
Out = Out & Chr((Asc(Mid(Txt, i, 1)) - Asc(Mid(Key, i, 1)) + 256) Mod 256)
Next i
cell.Formula = Out
Next cell
End Sub