Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
function somefunction() {
какие-то операторы;
}
заменяется на эквивалентный текст:
function somefunction() {
var encrypted= "...";
// зашифрованный текст тех же самых операторов
var source=decoding_function (encrypted);
eval(source);
}
Для выполнения такой замены, конечно, следует написать некую автоматическую (или автоматизированную) утилиту.
При таком подходе функции постоянно существуют в зашифрованном виде вплоть до момента их вызова, и рассматривать их исходный текст сравнительно бесполезно.
Используемый алгоритм шифрования, в частности его криптостойкость, не имеет значения. Все равно все ключи для расшифровки, если такие имеются, распространяются вместе с зашифрованными данными. Единственная цель шифрования – сделать текст JavaScript визуально нечитаемым. Собственно, разумнее всего вместо шифрования использовать какой-нибудь простой алгоритм сжатия типа Лемпеля-Зива.
Мы не будем останавливаться на реализации такого алгоритма – это классическая задача, многократно описанная в литературе. Тут есть лишь один специфический подводный камень.
Как правило, алгоритмы расшифровки (или распаковки сжатых данных) должны получать на вход массив бинарных данных – некоторую цепочку битов. А строчная JavaScript-константа, присваиваемая переменной encrypted оператором:
var encrypted= "...";