Как я могу зашифровать код JavaScript, чтобы он не был дешифруемым?

У меня есть код JavaScript, который мне нужно зашифровать, но я хочу быть уверенным, что никто не сможет его расшифровать.

Какие инструменты я могу использовать для этого?

- Изменить -

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

Ответ 1

Код Javascript выполняется в браузере, то есть на стороне клиента, что означает, что он должен быть не зашифрован на стороне клиента.

"Лучшее", что вы можете сделать, это, вероятно, минимизировать его, что затруднит его понимание - и немного obfuscation может сделать тоже - даже если кто-то действительно мотивирован, все равно сможет его прочитать.

См., например, YUI Compressor, который может как минимизировать, так и обфускать JS-код.

Ответ 2

Если вы действительно хотите зашифровать его, чтобы никто не мог его расшифровать, вы можете использовать любое количество шифров. Например, чтобы сделать это вручную, вы можете использовать TrueCrypt; или сделать это программно, используйте библиотеки шифрования, доступные в большинство языков.

Если то, что вы действительно задаете, - это то, как обфускать код, чтобы никто не мог его перепроектировать, ответ: вы не можете, а не в Javascript или любом другом язык. Лучшее, что вы можете сделать, это усложнить работу инженеров-реверсоров, затрудняя их чтение; для этого существует любое количество инструментов:

Ответ 3

Нет никакого способа сделать это. Вы можете скрывать его и иметь в нем код проверки домена. Или вы можете использовать его с серверной стороной script, которая проверяет ссылочный домен.

Ответ 4

Невозможно сделать это, потому что в конце дня код все равно должен запускаться на незашифрованном компьютере, что означает, что подпрограмма для дешифрования кода должна быть отправлена ​​вместе с зашифрованным кодом. Вы передаете им как замок, так и ключ, все, что им нужно сделать, это повернуть.

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

Ответ 5

Я думаю, вы вводите в заблуждение шифрование с скомпилированным двоичным.

Даже коммерческое программное обеспечение с закрытым исходным кодом, такое как Microsoft Office или Adobe Photoshop, зашифровано для распространения. Но они скомпилированы в собственный машинный код, что затрудняет их перепроектирование.

В JavaScript нет такой вещи, как скомпилированный двоичный файл. Но, поскольку все больше и больше браузеров переходят на компиляцию байт-кода для достижения более высокой производительности, мы можем когда-нибудь иметь скомпилированный исходный формат JavaScript. Возможно, аналогично файлам Python .py и .pyc, может быть, у нас будет файл .jsc или скомпилированный JavaScript, который может быть доставлен в браузер в двоичной форме для запуска в его виртуальной машине JavaScript.

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

Ответ 6

В то время как фактически не зашифровано, Yahoo YUI Compressor сжимает и обфускает ваш JavaScript для нормального использования и обеспечивает лучшее сжатие, которое JSMin.

Ответ 7

То, что вы хотите, теоретически и практически невозможно. Люди скажут вам, что это невозможно, и вы можете подумать: "Ну, потому что никто не пробовал достаточно сильно". Нет. Точно так же невозможно вычислять n-е простое число в линейном или постоянном времени. Это невозможно так же, как решить проблему остановки. "Что вы имеете в виду, 2 + 2 не равно пяти? Вы не слишком стараетесь!"

Не только это невозможно, но мотивы для такого рода вещей обычно довольно ошибочны. Это всегда фундаментальная ошибка, чтобы попытаться использовать технологию для решения проблемы, которая является принципиально правовой проблемой. Возможно, вы хотите защитить свой код от "пиратов" или конкурентов? Неверно, что вы написали что-нибудь особенно достойное воровства, но если у вас есть, и вы не хотите, чтобы люди украли его, тогда ваш единственный верный регресс - это верховенство закона.

Однако на более высоком уровне ваша проблема вряд ли будет конкурентами или пиратами, крадущими ваш код. Ваша проблема будет ориентирована на бизнес: получение аудитории за счет создания качественного продукта, правильной цены и достаточного маркетинга. Вы делаете это правильно, кто-то, крадущий ваш код, не имеет значения. Вы делаете это правильно, и наличие "подлинного оригинала" будет иметь реальную ценность. На самом деле, если вы выпустите свой источник с открытым исходным кодом, он может вам только по-настоящему помочь, потому что тогда у вас есть армия заинтересованных любителей, работающих на вас бесплатно, потенциально. Пиратство и обратная инженерия на самом деле являются находкой, потому что это означает, что люди заинтересованы в вашем продукте, чтобы его улучшить. Лучше всего сделать все возможное, чтобы это произошло.

Если ваш бизнес действительно зависит от сохранения секретности javascript, вы в основном допустили ошибку в своем бизнес-плане на этапе 1.

Если ваш бизнес продает библиотеку javascript (такие вещи существуют!), то вы не хуже, чем любой другой продавец программного обеспечения. Лучше всего сделать это, чтобы продать его честным предприятиям, у которых нет проблем с предоставлением вам денег. Люди, которые пираты ваших вещей не собирались платить вам в любом случае, и получают фундаментальный недостаток, что они не получают вашу техническую поддержку или регулярные обновления обслуживания.

Если это не деловое усилие, тогда я действительно не понимаю, почему вы даже беспокоитесь. Правильный кредит?

Ответ 8

Microsoft использовала Script Encoder для кодирования вашего JavaScript (и ASP и VBScript и т.д.), но закодированный script работал только в Internet Explorer, поэтому он был большим no-no (ссылка)

В настоящее время возможна только обфускация. Но вы можете сломать любую обфускацию с помощью инструментов, таких как Online JavaScript Beautifier, чтобы вы не повезло. Вы можете свести к минимуму, и вы можете запутаться, но вы действительно не можете скрыть то, что вы делаете.

Лучший минимизатор/обфускатор, вероятно, Google Closure Compiler - он очень продвинутый и может превратить ваш код во что-то очень малопонятное.

Ответ 9

То, что вы ищете, - это обфускация, а не шифрование. Существуют инструменты, такие как JSMin и YUI Compressor, что сделает ваш код очень нечитаемым, до такой степени, что никто не захочет попытаться понять его. Однако нет способа сделать так, чтобы кто-то не мог копировать и вставлять его на свой собственный веб-сайт и запускать его там. Я бы не стал беспокоиться об этом, честно говоря, потому что вы тратите свое время на то, чтобы защитить то, что не может быть защищено. Попробуйте поместить всю свою "важную" логику на серверной стороне, если это возможно, потому что это единственный надежный способ сделать это. Если браузер может получить к нему доступ, так может кто угодно еще.

Ответ 10

Я не думаю, что вы хотите шифровать, если только вы не собираетесь писать расширение для браузера, которое может расшифровать javascript.

Я, GWT или даже jsmin, может достаточно сжать/обфускать ваш javascript для нормального использования.

Если вы хотите связать код на стороне клиента с вашим сайтом, вам может потребоваться какое-то случайное рукопожатие, которое зависит от метода на стороне сервера, чтобы "проверить" javascript. Я даже не знаю, насколько это возможно.

Ответ 11

Это точно DRM: вы предоставляете пользователю блокировку, а также ключ к ней и ожидаете, что сможете сказать, что с ней можно сделать.

Теоретически невозможно: если их компьютер может выполнять код, он должен быть незашифрован там.

Это тоже практически невозможно: посмотрите на всех, кто смотрит DVD-диски на Linux-боксах, чтобы увидеть, насколько вы успешны.