Страницы: 1
RSS
Шифрование данных на листе Excel и в VBA
 
Мое почтение, джентльмены!
В продолжении темы Variant Serialization and Deserialization
Сделал инструменты шифрования алгоритмами AES данных на листе Excel и в коде VBA.
Виды алгоритмов шифрования можно выбирать. В тесте работает алгоритм AES256:CBC.

Функционал:
1. Можно шифровать как отдельные значения так и диапазоны/массивы.
2. Шифровать данные можно прям на листе Excel, с дальнейшей расшифровкой нужного диапазона или всего листа.
3. Зашифрованные данные можно хранить в XLL как в виде значений (value2), так и в виде формул (formula)
4. Алгоритм шифрования AES256:CBC. Использована библиотека Crypto++
5. Пароль нигде не хранится, его знает только пользователь и при утере, расшифровать данные не получится никому :)
6. Зашифрованные диапазоны - независимые, т.е. можно каждый отдельный диапазон зашифровать со своим паролем, можно зашифровать диапазон дважды (для гиков :) )
7. Для данных у которых упаковка будет экономить размер итоговой зашифрованной строки (для массивов и длинных строк)  - используется алгоритм сжатия WinAPI:XPRESS_HUFF
8. Реализован механизм (shared string table), как и в Excel, для оптимизации размера одинаковых строк (для массивов).
9. Данные на листе Excel шифруются для каждой ячейки отдельно (для возможности хранить и расшифровывать данные независимо для каждой ячейки) с применением п,7.
Для VBA (одно значение или массив) зашифровываются в один массив байт, что позволяет применять и п.7 и п.8  
10. Итоговый результат шифрования (любого типа данных: строки, числа, ошибки и т.д.) - хранится в виде строки (массива зашифрованных байт).



Шифрование на листе Excel и хранение данный в XLL:



Шифрование данных VBA:

Функции:
1. VARIANT stringProtect = VariantAES256Encrypt(VARIANT variantIn, BSTR password, BSTR salt, LONG mode)
2. VARIANT variantUnProtect = VariantAES256Decrypt(VARIANT byteArrayIn, BSTR password, BSTR salt, LONG mode)


Можем обсудить, кому интересно, подробности и, возможно, внести новый функционал, если он нужен и не реализован.

Надстройка:
BedvitXLL64v5.0
Изменено: bedvit - 19.01.2024 00:05:59
«Бритва Оккама» или «Принцип Калашникова»?
 
bedvit, приветствую и спасибо!
    Инструмент полезный — буду использовать. Аналогов я не знаю.
    Видео очень помогает — вопросы отпали. Хорошо, если и для остальных инструментов будет демонстрация (если не видео, то хоть скринами или примерами кода VBA).
Цитата
bedvit написал:
Можем обсудить, кому интересно, подробности и, возможно, внести новый функционал, если он нужен и не реализован.
если ты про этот инструмент, то пока что предложить нечего, а по остальным инструментам я тебе накидал "вагон и маленькую тележку" предложения с примерами  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Спасибо за тест! Твоих предложений много, нужно отобрать интересные и полезные! Видео - это тема, может youtube - канал завести? :)
«Бритва Оккама» или «Принцип Калашникова»?
 
Цитата
bedvit: Твоих предложений много, нужно отобрать интересные и полезные!
буду ждать

Цитата
bedvit: может youtube - канал завести?
можно, но ютубчик сейчас на волоске висит. Возможно, стоит смотреть в сторону "утверждённых" платформ.
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
bedvit,
если хорошо пойдет, то думаю, что лучше выбрать вк в качестве платформы  :)
 
Новая редакция BedvitXLL64v5.0b (beta)
Добавленный функционал:
+для каждой команды есть всплывающие подсказки
+хранить и шифровать можно значения (value2) или формулы (formula). Формула может содержать максимум 8 тыс. символов
+добавлены разные алгоритмы шифрования
+тип данных и алгоритм шифрования запоминается при зашифровки, и их нужно указывать только при шифровании. При расшифровки нужен только 1 пароль (повтор пароля нужен только для шифрования, для расшифровки достаточно одного-первого)
+шифровать можно на листе, шифровать можно сохраняемые диапазоны и шифровать можно и файл пользовательских сохранений.
+сохранять диапазон в списке диапазонов можно в зашифрованном виде или не в зашифрованном (в незашифрованном эффективнее сжимаются сохранения т.к. обрабатываются все дубликаты во всех сохранённых диапазонах, а не частично в отдельном диапазоне), но можно шифровать сам файл пользовательских настроек - эффективность сжатия сохраняется.
+есть возможность автоматически определять границы диапазона, выделяя весь лист или целый столбец или целую строку, см. usedrange
+добавлена возможность включать пользовательские сообщения и сообщения в статус-баре Excel
+ЭКСПЕРЕМЕНТАЛЬНО: добавлено автоматическое распознавание разных блоков зашифрованных диапазонов, с разными алгоритмами и их расшифровка разом (см. видео).


BedvitXLL64v5.0
Изменено: bedvit - 19.01.2024 00:06:15
«Бритва Оккама» или «Принцип Калашникова»?
 
Добрый день.
Иногда возникает такая необходимость:
а) Пользователь не должен увидеть некие данные на определенных диапазонах ячеек, а должен только работать с предоставленным ему диапазонами ячеек.
б) Пользователь не должен увидеть формулу расчета, а должен видеть только результат этой формулы.

Стандартные защиты диапазона и листа Excel'я легко сломать.

1) Этот инструмент даёт реализовать вышеуказанные 2 функционала, или это немного о другом?
2) Если ответ на 1-й вопрос "ДА", то у пользователя должна быть установлена надстройка Виталия или нет?
3) Если ответ на 1-й вопрос "ДА", то может ли являться проблемой наличие узбекских букв Қ, Ғ, Ҳ, Ў внутри значений диапазонов, внутри формул, в именах диапазонов, листов, книги Excel и папки и надпапках в котором расположена эта книга Excel?

P.S. Извиняюсь, пока нет возможности посмотреть видео.
Изменено: Бахтиёр - 18.01.2024 09:35:19
 
Бахтиёр,
а) этот инструмент позволяет зашифровать нужный диапазон данных (формул) и пользователь может так же на них ссылатся, когда нужно - можно этот диапазон расшифровать и сделать пересчет модели.
б) формулу можно пересчитать и зашифровать, при следующем пересчёте - можно сделать это еще раз. В динамике получать результат из зашифрованных формул нельзя.

+Для работы нужна надстройка, ее можео просто открыть или установить в папку надстроек. Работает как обычная надстройка под правами пользователя.

+Поддерживаются все символы юникода, какие сможет отобразить Excel - это вопрос шрифтов.
Изменено: bedvit - 18.01.2024 10:33:21
«Бритва Оккама» или «Принцип Калашникова»?
 
Виталий, спасибо.
 
Релиз BedvitXLL v5.0
Добавил описание на сайт, примеры шифрования тоже. Всем, кому интересно шифрование в XLL. Шифрование в COM
Изменено: bedvit - 22.01.2024 09:16:12
«Бритва Оккама» или «Принцип Калашникова»?
 
04.02.2024 BedvitXLL.dll_v5.1

+XLLcmdRangeStore() - добавлена возможность использования разных локализаций и разной разрядности Excel при шифровании, дешифровки и сохранении формул/значений (см. видеосправку ниже).
+Добавлена обработка ошибок на листе Excel при шифровании, дешифровки и сохранении формул/значений.

Как сохраняются текстовые форматы в функциях форматирования в разных локализациях Win + Excel, как сам Excel с этим справляется пока вопрос открытый.
Изменено: bedvit - 05.02.2024 10:05:30
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: 1
Наверх