1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chinasoft_ohos-StringFog

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

StringFog

Проект основан на открытом проекте StringFog, адаптирован и доработан для openharmony. Исходный андроид-проект можно найти по меткам проекта и адресу GitHub (https://github.com/MegatronKing/StringFog).

Описание проекта

  • Название проекта: StringFog
  • Серия: Адаптация и портирование компонентов third-party для openharmony
  • Функционал: Инструмент плагин для автоматической шифровки строк в файлах dex/aar/jar
  • Версия основной библиотеки: StringFog release v1.1.0
  • Состояние портирования: Основные функции завершены
  • Различия при вызове: Отсутствуют
  • Версия SDK: sdk5, DevEco Studio2.1 beta3
  • Автор и поддержка: Хэнь Лу
  • Контакты: xxx@chinasoftinc.com

Демонстрация работы


  • До шифрования:
String a = "This is a string!";
  • После шифрования:
String a = StringFog.decrypt("ABCDEFGHIJKLMN");
  • При выполнении:
decrypt: "ABCDEFGHIJKLMN" => "This is a string!"

Установка

Добавьте зависимость в файл build.gradle модуля:

// Добавление Maven репозитория
repositories {
    maven {
        url 'https://s01.oss.sonatype.org/content/repositories/snapshots/'
    }
}

// Добавление зависимости
dependencies {
    implementation 'com.gitee.chinasoft_ohos:stringfog:0.0.1-SNAPSHOT'
}

Для SDK версии 5 и DevEco Studio 2.1 beta3 проект может быть запущен непосредственно. В случае ошибок удалите файлы .gradle, .idea, build, gradle, build.gradle, создайте новый проект с учетом вашей версии и скопируйте соответствующие файлы в корневую директорию.### Использование Поскольку был создан Gradle-плагин, процесс интеграции очень прост и не влияет на конфигурацию сборки. Плагины уже загружены на jcenter, поэтому вы можете использовать их напрямую.

1. В файле build.gradle корня проекта добавьте зависимость плагина.

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        ...
        classpath 'com.github.megatronking.stringfog:gradle-plugin:2.2.1'
        // Выберите алгоритмы шифрования и расшифровки; по умолчанию реализованы xor и aes-cbc, также можно использовать свои алгоритмы.
        classpath 'com.github.megatronking.stringfog_ext_xor:xor:1.1.0'
    }
}

2. Настройте плагин в файле build.gradle модуля или библиотеки.

apply plugin: 'stringfog'
stringfog {
    // Это ключ шифрования/дешифрования, который можно свободно определять.
    key 'Hello World'
    // Включение/отключение
    enable true
    // Путь к реализации библиотеки шифрования/расшифрования, должен совпадать с конфигурацией выше.
    implementation 'com.github.megatronking.stringfog_ext_xor.StringFogImpl'
    // Указание путей к пакетам кода, требующих шифрования. Можно указывать несколько путей. Если пути не указаны, всё будет зашифровано по умолчанию.
    fogPackages = ['com.xxx.xxx']
}

3. В файле build.gradle модуля или библиотеки добавьте зависимость к библиотеке шифрования и дешифрования.

dependencies {
      ...
      // Здесь должна совпадать с выбранным выше алгоритмом шифрования, используется для расшифровки во время выполнения.
      implementation 'com.github.megatronking.stringfog:xor:1.1.0'
}
```### Расширение

#### Аннотация для игнорирования дешифровки
Если разработчики хотят пропустить автоматическое шифрование для некоторых классов, они могут использовать аннотацию `@StringFogIgnore`:
```java
@StringFogIgnore
public class Test {
    ...
}

Кастомизация алгоритма шифрования/дешифрования

Реализуйте интерфейс IStringFog, обратившись к реализациям двух алгоритмов в директории stringfog-ext. Обратите внимание, что некоторые алгоритмы могут работать по-разному на разных платформах, что может вызвать проблемы при декриптировании во время выполнения. Интеграция подробно описана ниже!

public final class StringFogImpl implements IStringFog {

    @Override
    public String encrypt(String data, String key) {
        // Кастомная реализация шифрования
    }

    @Override
    public String decrypt(String data, String key) {
        // Кастомная реализация дешифрования
    }

    @Override
    public boolean overflow(String data, String key) {
        // Максимальная длина строки составляет  Yöntem 65536, здесь следует проверять, не произошло ли переполнение после шифрования, если да — шифрование не выполняется.
        // Это позволяет контролировать шифрование строк, удовлетворяющих определенным условиям.
    }
    
}

Файл отображения (Mapping)

Шифрованные и дешифрованные строки будут автоматически генерировать файл отображения (mapping) в папке outputs/mapping/stringfog.txt.

Тестовая информация

Пока тестирование ещё не проведено#### Версионирование

  • v0.0.1_alpha

Авторское право и лицензия

Лицензия Apache — 2.0

   Apache License
                       Версия 2.0, январь 2004 года
                    http://www.apache.org/licenses/

Условия использования, воспроизведения и распространения

1. Определения.

  "Лицензия" означает условия и положения использования, воспроизведения и распространения, как определены разделами 1—9 данного документа.

  "Лицензиат" означает владельца авторских прав или лицо, которое владелец авторских прав уполномочил выдавать Лицензию.

  "Юридическое лицо" означает объединение действующего лица со всеми другими лицами, которые контролируют, подчинены или находятся под общим контролем этого лица. Для целей данного определения "контроль" означает (i) непосредственный или косвенный контроль над управлением таким лицом путем договора или иначе, или (ii) владение более чем 50% акций, или (iii) выгодное владение таким лицом. 

  "Вы" (или "Ваш") означает одного человека или Юридическое лицо, которое использует права, предоставленные данной лицензией.

  "Исходный" код означает предпочитаемую форму для внесения изменений, включая, но не ограничиваясь, программный код, документацию и конфигурационные файлы.      "Объектный" код означает любую форму, полученную путём механического преобразования или перевода исходной формы, включая, но не ограничиваясь, скомпилированный объектный код, сгенерированную документацию и преобразование в другие типы медиа.      "Работа" означает работу авторства, как в Исходной, так и в Объектной форме, доступную под Лицензией, как указано в примечании к авторским правам, включённом в или прикреплённом к работе (пример приведён ниже в Приложении).

  "Производные работы" означают любую работу, как в Исходной, так и в Объектной форме, основанную на (или выведенную из) Работы, для которой редакционные исправления, аннотации, детализация или другие изменения представляют собой целое новое произведение авторства. Для целей данной Лицензии, Производные работы не включают работы, остающиеся отдельными от, или просто связанными (или связаными по имени) с интерфейсами Работы и Производных работ.      "Контрибьюшен" означает любую работу авторства, включая первоначальную версию работы и любые модификации или добавления к этой работе или производным работам, которая намеренно представлена лицензиару для включения в работу автором авторских прав или индивидуумом или юридическим лицом, уполномоченным представлять от имени владельца авторских прав. Для целей данного определения, "представлено" означает любую форму электронной, устной или письменной связи, отправленной лицензиару или его представителям, включая, но не ограничиваясь, общение на электронных рассылках, системах управления исходным кодом и системах отслеживания проблем, управляемых лицензиаром или его представителем для обсуждения и улучшения работы, но исключающую общение, явно помеченное или иным образом обозначенное в письменной форме владельцем авторских прав как "не является КОНТРИБЬЮШЕН".

  "Контрибьютор" означает лицензиара и любого индивидуума или юридическое лицо, от имени которых была получена вкладка лицензиаром и последующим образом включена в работу.   2. Грант лицензии на авторские права. Под условиями и положениями данной Лицензии каждый Контрибьютор предоставляет Вам вечную, всемирную, неконтрактную, бесплатную, без роялти, неотзываемую лицензию на воспроизведение, создание производных работ, публичное представление, публичное исполнение, сублицензирование и распространение работы и таких производных работ в виде исходного кода или объектного кода.   3. Грант патентной лицензии. Под условиями и положениями данной Лицензии каждый Контрибьютор предоставляет Вам вечную, всемирную, неконтрактную, бесплатную, без роялтов, неотзываемую (кроме случаев, указанных в данном разделе) патентную лицензию на изготовление, заказ изготовления, использование, предложение продажи, продажу, импорт и иной перенос работы, где такая лицензия применима только к тем патентным заявкам, которые могут быть лицензированы данным Контрибьютором и которые обязательно нарушаются его вкладом(ами) самостоятельно или совместно с работой, к которой был представлен такой вклад. Если Вы начнете патентное судебное дело против любой стороны (включая встречное требование или встречный иск в суде), утверждая, что работа или вклад, включённый в работу, представляет собой прямое или внесённое вкладом патентное нарушение, то любые патентные лицензии, предоставленные Вам по данной Лицензии для этой работы, прекратятся со дня начала такого судебного дела.   4. Распространение. Вы можете воспроизводить и распространять копии работы или производных работ от неё в любом виде, с изменениями или без, в форме исходного кода или объектного кода, при условии выполнения следующих условий:

  (а) Вы должны передать каждому другому получателю работы или
      производных работ копию данной лицензии;      (б) Вы должны обеспечить наличие явных уведомлений о том, что вы изменили файлы;
    (в) Вы должны сохранить все уведомления об авторском праве, патентах, товарных знаках и атрибутивных уведомлениях в исходной форме каждого производного продукта, который Вы распространяете, за исключением тех уведомлений, которые не относятся ни к какой части производного продукта. 
   (d) Если Работа включает текстовый файл с пометками ("NOTICE") как часть его распространения, то любые Дополнительные Работы, которые Вы распространяете, должны содержать читаемую копию атрибутивных уведомлений, содержащихся в таком файле "NOTICE", за исключением тех уведомлений, которые не относятся ни к какой части Дополнительной Работы, по крайней мере, в одном из следующих мест: внутри текстового файла "NOTICE", распределённого вместе с Дополнительной Работой; внутри формы исходного кода или документации, если они предоставлены вместе с Дополнительной Работой; или, внутри отображения, сгенерированного Дополнительной Работой, если и где бы то ни было, где такие третьи уведомления обычно появляются. Содержимое файла "NOTICE" предназначено только для информационных целей и не модифицирует Лицензию. Вы можете добавить свои собственные уведомления об авторстве к Дополнительным Работам, которые Вы распространяете, рядом сили как приложение к тексту "NOTICE" из работы, при условии, что такие дополнительные уведомления об авторстве не могут быть истолкованы как модификация лицензии.      Вы можете добавить своё собственное уведомление об авторском праве к вашим изменениям и предоставить
  дополнительные или другие условия лицензии для использования, воспроизведения или распространения ваших
  изменений, или для любой такой Дополнительной работы в целом, при условии, что ваше использование,
  воспроизведение и распространение работы в остальном соответствуют условиям, указанным в этой лицензии.
  1. Предоставление вкладов. Если вы явно не укажете иное, любой вклад, намеренно представленный вами для включения в работу к лицензиату, будет подчиняться условиям данной лицензии без каких-либо дополнительных условий. Несмотря на вышеизложенное, ничего здесь не должно превалировать над или изменять условия любого отдельного соглашения о лицензии, которое вы могли заключить с лицензиатом относительно таких вкладов. 6. Товарные знаки. Данная лицензия не предоставляет права использовать товарные знаки, знаки обслуживания, торговые названия или названия продуктов Лицензиата, кроме случаев, когда это требуется для разумного и обычного использования при описании происхождения Работы и воспроизведения содержимого файла "NOTICE".

  2. Отказ от гарантий. За исключением случаев, когда это требует применимое законодательство или было явно согласовано в письменной форме, Лицензионщик предоставляет работу (и каждый участник предоставляет свои вклады) на условиях «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ И УСЛОВИЙ ВСЕГО ВИДА, как явных, так и подразумевающихся, в том числе, но не ограничиваясь этим, любых гарантий или условий НАЗВАНИЯ, НЕНАРУШЕНИЯ ПРАВ, ПРИГОДНОСТИ ДЛЯ ПРОДАЖИ ИЛИ ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Вы полностью ответственны за определение правильности использования или переуслуг работы и принимаете все связанные с этим риски. 8. Ограничение ответственности. Ни при каких обстоятельствах и ни при какой юридической теории, будь то в рамках деликта (включая халатность), договора или иного, если это не требует применения применимого законодательства (например, намеренные и грубые действия халатности) или не было явно согласовано в письменной форме, ни один участник не будет нести перед Вами ответственности за убытки любого вида, включая прямые, косвенные, специальные, случайные или последствия, независимо от характера этих убытков, возникших вследствие данной лицензии или вследствие использования или невозможности использовать работу (включая, но не ограничиваясь этим, убытки за потерю деловой репутации, прекращение работы, отказ компьютера или его неисправность, а также все другие коммерческие убытки или потери), даже если такой участник был проинформирован о возможности таких убытков. 9. Принятие гарантий или дополнительной ответственности. При распространении работы или производных работ от неё вы можете выбрать предложить и взимать плату за принятие обязательств по обеспечению поддержки, гарантии, компенсации или других обязанностей и/или прав, согласованных с условиями данной лицензии. Однако, принимая такие обязательства, вы можете действовать только от своего имени и на свой страх и риск, а не от имени любого другого участника, и только если вы согласитесь компенсировать, защищать и освобождать каждого участника от любой ответственности, возникшей по причине вашего принятия какой-либо такой гарантии или дополнительной ответственности. КОНЕЦ УСЛОВИЙ И ПОЛОЖЕНИЙ

ПРИЛОЖЕНИЕ: Как применять лицензию Apache к вашей работе. Чтобы применить лицензию Apache к вашей работе, прикрепите следующий шаблон уведомления, заменив поля, заключённые в квадратные скобки "[ ]", вашими собственными данными. (Не включайте сами квадратные скобки!) Текст должен быть заключён в соответствующую синтаксическую конструкцию комментария для данного формата файла. Также рекомендуется указывать имя файла или класса вместе с описанием его назначения на том же "печатном листе", что позволяет легче идентифицировать его в архивах третьих сторон. Авторское право 2016, Megatron King

Лицензировано в соответствии с лицензией Apache, версия 2.0 ("Лицензия"); вы можете использовать этот файл только в рамках данной Лицензии. Вы можете получить копию Лицензии по адресу:

   http://www.apache.org/licenses/LICENSE-2.0

В случае отсутствия требований применимого закона или письменного соглашения, программное обеспечение, распространяемое в соответствии с Лицензией, предоставляется «как есть» без каких-либо гарантий или условий любого типа, явных или подразумевающихся. Увидеть конкретный язык регламентирующий права и ограничения в Лицензии.

Связаться с GitHub API Обучение Магазин Блог О нас © 2016 GitHub, Inc. Условия использования Конфиденциальность Безопасность Статистика

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Инструмент-плагин для автоматического шифрования строк в файлах dex/aar/jar. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/chinasoft_ohos-StringFog.git
git@api.gitlife.ru:oschina-mirror/chinasoft_ohos-StringFog.git
oschina-mirror
chinasoft_ohos-StringFog
chinasoft_ohos-StringFog
master