Шифрование строк используется повсеместно в настольных и мобильных приложениях. Возможно, вы даже не знаете об этом, но он есть, и я покажу вам, как сделать это проще и быстрее.

Шифрование строк в реальных сценариях

Вы можете спросить, где именно используется шифрование строк и почему?

Позвольте мне показать вам список реальных случаев использования:

  • Системные сообщения лицензий зашифрованы, чтобы их нельзя было легко найти с помощью шестнадцатеричного редактора, например, «Ваш лицензионный ключ недействителен!». Если взломщик / хакер обнаружит его, он может легко найти код, который ссылается на эту строку и находит код проверки лицензии!
  • Строки подключения к локальной базе данных с именами пользователей и паролями к базе данных в той или иной форме зашифрованы на 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 поставляется с уникальным механизмом шифрования.

Это механизм полиморфного шифрования, аналогичный методам шифрования, используемым в решениях для защиты программного обеспечения и передовых компьютерных вирусах.

Как это работает?

Позвольте мне объяснить, как работает процесс полиморфного шифрования.

  1. Выбирается случайный набор команд шифрования (xor, addition, subtraction, bit rotations, bit shifts, logical negation и т. Д.).
  2. Создается случайный набор помощников encryption keys.
  3. Каждый байт входной строки шифруется каждой командой шифрования в случайном наборе.
  4. Код дешифрования на выбранном языке программирования генерируется обратным набором команд шифрования.

Подробнее о полиморфных движках:

Поддерживаемые языки программирования

Движок StringEncrypt поддерживает генерацию кода для следующих языков программирования:

Доступные редакции

StringEncrypt можно использовать:

Исходный код расширения (обновление 31 декабря 2020 г.)

Вы можете найти исходный код расширения String Encrypt Extension на GitHub:



Удачного 2021 года :)