Мой старый сайт и зеркало-архив (осторожно, на сайте реклама!)
BedvitCOM.VariantAES256Encrypt
Часть библиотеки BedvitCOM
Использованы исходники Crypto++
Шифрование данных алгоритмами AES
Функционал:
+ Можно шифровать как отдельные значения, так и диапазоны/массивы.
+ Тип данных и алгоритм шифрования запоминается при зашифровки, и их нужно указывать только при шифровании
+ Пароль нигде не хранится, его знает только пользователь и при утере, расшифровать данные не получится никому
+ Зашифрованные значения или массивы - независимые, т.е. можно каждый отдельный массив или значение зашифровать со своим паролем, можно зашифровать дважды (для гиков )
+ Для данных у которых упаковка будет экономить размер итоговой зашифрованной строки (для массивов и длинных строк) - используется алгоритм сжатия WinAPI:XPRESS_HUFF
+ Реализован механизм (shared string table), как и в Excel, для оптимизации размера одинаковых строк (для массивов).
+ Итоговый результат шифрования (любого типа данных: строки, числа, ошибки и т.д.) - хранится в виде строки (массива зашифрованных байт).
Функции:
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
Пример использования