Шифрование данных на листе Excel, в XLL, в COM (на примере VBA)
Запись от bedvit размещена 25.01.2024 в 17:26
Показов 5036
Комментарии 0
|
Шифрование данных алгоритмами 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 (видео) |
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


