Форум программистов, компьютерный форум, киберфорум
bedvit
Войти
Регистрация
Восстановить пароль

Шифрование данных на листе Excel, в XLL, в COM (на примере VBA)

Запись от bedvit размещена 25.01.2024 в 17:26
Показов 5877 Комментарии 0
Метки excel, vba

Шифрование данных алгоритмами AES на листе Excel, шифрования файла пользовательских сохранений XLL, хранение зашифрованных диапазонов формул/данных с листа Excel в файле пользовательских сохранений XLL
Часть библиотеки BedvitXLL
Использованы исходники Crypto++
Расширенный пример см. на сайте bedvit.ru


Алгоритмы шифрования AES:

1 - "Без шифрования"
2 - "AES256:ECB"
3 - "AES256:CBC"
4 - "AES256:OFB"
5 - "AES256:CFB"
6 - "AES256:CBC-CTS"
7 - "AES256:CTR"




Шифрование на листе Excel и хранение данный в XLL:
Функционал:
+ Можно шифровать как отдельные значения так и диапазоны/массивы.
+ Шифровать можно на листе, шифровать можно сохраняемые диапазоны и шифровать можно и файл пользовательских сохранений.
+ Шифровать данные можно прям на листе Excel, с дальнейшей расшифровкой нужного диапазона или всего листа в виде значений (value2), так и в виде формул (formula).
+ Зашифрованные данные можно хранить в XLL как в виде значений (value2), так и в виде формул (formula). Формула может содержать максимум 8 тыс. символов
+ Пароль нигде не хранится, его знает только пользователь и при утере, расшифровать данные не получится никому
+ Тип данных и алгоритм шифрования запоминается при зашифровки, и их нужно указывать только при шифровании. При расшифровки нужен только 1 пароль (повтор пароля нужен только для шифрования, для расшифровки достаточно одного-первого)
+ Зашифрованные диапазоны - независимые, т.е. можно каждый отдельный диапазон зашифровать со своим паролем, можно зашифровать диапазон дважды (для гиков)
+ Реализовано автоматическое распознавание разных блоков зашифрованных диапазонов, с разными алгоритмами и их расшифровка разом (см. видео), но должен быть одинаковый пароль для случаев пакетной распаковки (сразу всего листа)
+ Для данных у которых упаковка будет экономить размер итоговой зашифрованной строки (для массивов и длинных строк) - используется алгоритм сжатия WinAPI:XPRESS_HUFF
+ Реализован механизм (shared string table), как и в Excel, для оптимизации размера одинаковых строк (для массивов), см. особенности ниже.
+ Данные на листе Excel шифруются для каждой ячейки отдельно (для возможности хранить и расшифровывать данные независимо для каждой ячейки)
+ Итоговый результат шифрования (любого типа данных: строки, числа, ошибки и т.д.) - хранится в виде строки (массива зашифрованных байт).
+ Для каждой команды есть всплывающие подсказки


Особенности:
+ Сохранять диапазон в списке диапазонов можно в зашифрованном виде или не в зашифрованном (в незашифрованном эффективнее сжимаются сохранения т.к. обрабатываются все дубликаты во всех сохранённых диапазонах, а не частично в отдельном диапазоне), но можно шифровать сам файл пользовательских настроек - эффективность сжатия сохраняется.
+ есть возможность автоматически определять границы диапазона, выделяя весь лист или целый столбец или целую строку, см. usedrange
+ добавлена возможность выключать пользовательские сообщения и сообщения в статус-баре Excel


Пример использования в Excel (видео)




Шифрование данных VBA:
Функции:

1. VARIANT stringProtect = VariantAES256Encrypt(VARIANT variantIn, BSTR password, VARIANT_BOOL secureZeroMemoryPassword, BSTR salt, LONG algorithmCrypto)
2. VARIANT variantUnProtect = VariantAES256Decrypt(VARIANT byteArrayIn, BSTR password, VARIANT_BOOL secureZeroMemoryPassword, BSTR salt, LONG algorithmCrypto)


Параметры функции:
1. variantIn - входящий массив или отдельное значение
1. byteArrayIn - входящий байтовый массив(строка) для расшифровки
2. password - пароль
3. secureZeroMemoryPassword - безопасное обнуление значения пароля
4. salt - соль (к паролю)
5. algorithmCrypto- алгоритмы шифрования AES:
1 - "Без шифрования"
2 - "AES256:ECB"
3 - "AES256:CBC"
4 - "AES256:OFB"
5 - "AES256:CFB"
6 - "AES256:CBC-CTS"
7 - "AES256:CTR"


stringProtect/variantUnProtect - получаемый результат: зашифрованная строка или первоначальный VARIANT


Пример использования в VBA (видео)
Миниатюры
Нажмите на изображение для увеличения
Название: 00001TestVariantDecrypt.PNG
Просмотров: 2581
Размер:	749.9 Кб
ID:	8462  
Изображения
Тип файла: jpg 00001TestVariantDecrypt2.jpg (116.0 Кб, 2333 просмотров)
Метки excel, vba
Размещено в C++
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru