Шифрование строк используется повсеместно в настольных и мобильных приложениях. Возможно, вы даже не знаете об этом, но он есть, и я покажу вам, как сделать это проще и быстрее.
Шифрование строк в реальных сценариях
Вы можете спросить, где именно используется шифрование строк и почему?
Позвольте мне показать вам список реальных случаев использования:
- Системные сообщения лицензий зашифрованы, чтобы их нельзя было легко найти с помощью шестнадцатеричного редактора, например, «Ваш лицензионный ключ недействителен!». Если взломщик / хакер обнаружит его, он может легко найти код, который ссылается на эту строку и находит код проверки лицензии!
- Строки подключения к локальной базе данных с именами пользователей и паролями к базе данных в той или иной форме зашифрованы на 99%. И для настольных, и для мобильных приложений. Вы не можете избежать этого в случае установки локальной базы данных (например, SQLite). Вы можете оставить его в виде обычного текста, но кто-то может украсть его и использовать для выгрузки (кражи) содержимого вашей базы данных в кратчайшие сроки.
- Шифрование локализованных строк предотвратит несанкционированный перевод вашего программного обеспечения (не смейтесь, но это настоящая проблема, если ваше программное обеспечение взломано, часто можно найти его переведенный с некоторыми поддельными строками в нем, например «Cracked by…» .
- Конечные точки API также часто зашифрованы. Вы не можете избежать включения его в исходный код, но лучшее, что вы можете сделать, чтобы скрыть это, - это зашифровать его.
Почему он вообще используется, почему бы вам не оставить его в виде обычного текста? Ответ: вы можете! Но зачем облегчать нечестным людям раскрытие ваших секретов?
- конкуренция - кража ваших данных с использованием ваших баз данных
- хакеры - пытаются использовать вашу инфраструктуру, используя всю информацию, которую они могут найти, включая данные, найденные в вашем программном обеспечении.
- взломщики - пытаться взломать ваше программное обеспечение и сделать его доступным бесплатно, оставляя простые текстовые строки в вашем программном обеспечении, все равно, что указывать им дорогу
Быстрое шифрование строк и файлов для разработчиков
Итак, как это сделать легко? Что ж, вы всегда можете написать свой собственный шифровальщик для строк или файлов и использовать тот же алгоритм в своем программном обеспечении для его дешифрования.
Но что, если вы работаете с несколькими языками программирования, такими как JavaScript, Python, Ruby или даже другими одновременно? Вам придется написать этот код дешифрования на каждом отдельном языке программирования для обработки алгоритма шифрования. Все сначала.
Представляем StringEncrypt для кода Visual Studio
Что оно делает? Он позволяет вам зашифровать и скрыть простые текстовые строки и содержимое файлов в исходном коде в безопасной и зашифрованной форме с помощью полиморфного движка, каждый раз генерирующего случайный код дешифрования.
Всего один щелчок в редакторе Visual Studio Code!
Расширение доступно здесь:
Примеры StringEncrypt
Я покажу вам несколько примеров, чтобы вы поняли, как это работает.
Пример шифрования строки JavaScript
До:
var superSecretPhrase = "Easy string encryption for developers!";
После:
// encrypted with https://www.stringencrypt.com (v1.4.0) [JavaScript]
// superSecretPhrase = "Easy string encryption for developers!"
var superSecretPhrase = "\uBF59\uC4DE\uE963\uF128\uE48D\u0172\u0917\uF2DC" +
"\uFB41\u0A66\u0BCB\u1CF0\u1C95\u23BA\u2B5F\u3A44" +
"\u5929\u430E\u6953\u5378\u623D\u63A2\u74E7\u74AC" +
"\u8251\u8A37\u943C\u94C1\u9CE6\u830B\uACF0\uB3D5" +
"\uC23A\uCA5F\uCC44\uDA69\uBB0E\uEDD3";
for (var rOnpR = 0, FiuqR = 0; rOnpR < 38; rOnpR++)
{
FiuqR = superSecretPhrase.charCodeAt(rOnpR);
FiuqR -= rOnpR;
FiuqR ^= 0xFFFF;
FiuqR += 0x82A3;
FiuqR = ((FiuqR << 5) | ( (FiuqR & 0xFFFF) >> 11)) & 0xFFFF;
FiuqR += 0xE87C;
FiuqR += rOnpR;
FiuqR -= 0x7CB9;
FiuqR = (((FiuqR & 0xFFFF) >> 7) | (FiuqR << 9)) & 0xFFFF;
FiuqR ^= 0x4928;
FiuqR += rOnpR;
FiuqR --;
FiuqR ^= 0xFC14;
FiuqR -= 0x406C;
FiuqR = (((FiuqR & 0xFFFF) >> 3) | (FiuqR << 13)) & 0xFFFF;
superSecretPhrase = superSecretPhrase.substr(0, rOnpR) + String.fromCharCode(FiuqR & 0xFFFF) + superSecretPhrase.substr(rOnpR + 1);
}
Шифрование строк C / C ++
До:
wchart_t *wszInvalidLicenseKey = L"Your license key is invalid!";
После:
// encrypted with https://www.stringencrypt.com (v1.4.0) [C/C++] // wszInvalidLicenseKey = "Your license key is invalid!" wchar_t wszInvalidLicenseKey[29] = { 0xB5D9, 0x5DDA, 0x25DC, 0x29DE, 0x91BE, 0x41E2, 0x75E4, 0x6DE6, 0x65D8, 0x59DA, 0x2DDC, 0x65DE, 0x91BE, 0x4DE2, 0x65E4, 0x35E6, 0x91BE, 0x75DA, 0x2DDC, 0x91C0, 0x75E0, 0x59E2, 0x39E4, 0x95E5, 0x41D8, 0x75DA, 0x61DC, 0x95C0, 0x11BE }; for (unsigned int MiBmW = 0, kufpD = 0; MiBmW < 29; MiBmW++) { kufpD = wszInvalidLicenseKey[MiBmW]; kufpD -= MiBmW; kufpD = ~kufpD; kufpD ^= MiBmW; kufpD = ((kufpD << 14) | ( (kufpD & 0xFFFF) >> 2)) & 0xFFFF; kufpD --; kufpD = ~kufpD; kufpD = (((kufpD & 0xFFFF) >> 8) | (kufpD << 8)) & 0xFFFF; kufpD ^= 0x74A5; kufpD -= 0x0422; kufpD = ~kufpD; wszInvalidLicenseKey[MiBmW] = kufpD; }
Шифрование файлов Python
Этот пример касается чтения, шифрования и вставки зашифрованного содержимого файла в ваш сценарий Python:
Поздоровайтесь с полиморфным шифрованием!
Забудьте о простом xor
шифровании! StringEncrypt поставляется с уникальным механизмом шифрования.
Это механизм полиморфного шифрования, аналогичный методам шифрования, используемым в решениях для защиты программного обеспечения и передовых компьютерных вирусах.
Как это работает?
Позвольте мне объяснить, как работает процесс полиморфного шифрования.
- Выбирается случайный набор команд шифрования (
xor
,addition
,subtraction
,bit rotations
,bit shifts
,logical negation
и т. Д.). - Создается случайный набор помощников
encryption keys
. - Каждый байт входной строки шифруется каждой командой шифрования в случайном наборе.
- Код дешифрования на выбранном языке программирования генерируется обратным набором команд шифрования.
Подробнее о полиморфных движках:
- Как построить полиморфный движок на C ++ - https://www.pelock.com/articles/polymorphic-encryption-algorithms
- Полиморфный движок в 32-битном ассемблере MASM - https://github.com/PELock/Simple-Polymorphic-Engine-SPE32
- Полиморфный движок - https://www.pelock.com/products/poly-polymorphic-engine
Поддерживаемые языки программирования
Движок StringEncrypt поддерживает генерацию кода для следующих языков программирования:
- C & C ++
- C # (C Sharp для .NET)
- Visual Basic .NET (VB.NET)
- Дельфи / Паскаль
- "Джава"
- JavaScript
- Питон
- "Рубин"
- АвтоИт
- Powershell
- Haskell
- MASM-ассемблер
- Ассемблер FASM
Доступные редакции
StringEncrypt можно использовать:
- Прямо на своем сайте - https://www.stringencrypt.com/
- Вы можете скачать отдельный клиент для Windows - https://www.stringencrypt.com/download/
- Вы можете использовать его через интерфейс WebAPI (с
PHP
) - https://www.stringencrypt.com/api/ - … И теперь также как расширение Visual Studio Code - https://marketplace.visualstudio.com/items?itemName=PELock.stringencrypt
Исходный код расширения (обновление 31 декабря 2020 г.)
Вы можете найти исходный код расширения String Encrypt Extension на GitHub:
Удачного 2021 года :)