Создание немодифицируемых файлов

Вы можете попробовать ниже

  1. Добавить все элементы из 1-го списка в 3-й список
  2. Сравнить 2-й и amp; 3-й список и удалить общие элементы или условие (см. Метод сравнения в классе фруктов)
  3. Если элементы удалены из 3-го списка, добавьте тот же элемент из 2-го в 3-й список

см. код ниже,

finalList.addAll(firstList);
for (Fruit secondfruit : secondList) {
    boolean isRemoved = finalList.removeIf(firstfruit -> firstfruit.compareTo(secondfruit) == 0);
    if(isRemoved) {
        finalList.add(secondfruit);
    }
}
for (Fruit fruit : finalList) {
    System.out.println(fruit.getName());
}

Фруктовый класс с сопоставимым,

class Fruit implements Comparable<Fruit> {
    private String id;
    private String name;
    private boolean isChecked;

    @Override
    public int compareTo(Fruit o) {
        if (o.isChecked && this.id.equalsIgnoreCase(o.id)) {
            return 0;
        }
        else {
            return 1;
        }
    }
}

Результат: f1 f3 f4 f2 f5

5
задан Roddy 19 November 2008 в 10:54
поделиться

9 ответов

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

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

13
ответ дан 18 December 2019 в 06:52
поделиться

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

Даже серверное решение может быть обойдено путем сниффинга трафика. Таким образом Вы нуждаетесь одному в них и используете SSL. И затем они просто исправили двоичный файл как выше и там идут это. Таким образом Вы используете различные меры для запутывания двоичного файла, и пользователи выкрикивают дизассемблер как IDA Pro.

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

4
ответ дан 18 December 2019 в 06:52
поделиться

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

3
ответ дан 18 December 2019 в 06:52
поделиться

Не, если Вы хотите 100%-е решение. Только посмотрите на киноиндустрию и музыкальную индустрию. Они попробовали и перестали работать много лет теперь :)

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

1
ответ дан 18 December 2019 в 06:52
поделиться

Для Вашей озабоченности по поводу распределения хеша... Хорошая практика должна сделать хеш и зашифровать его с парой частной с открытым ключом. И только необходимо распределить открытый ключ. Тем путем они могут считать его, но не могут изменить его или создать новый.

Я предлагаю пойти с Цифровой подписью, как предложено JesperE. Процесс является стандартным, Вы найдете многих примером, демонстрирующим это.

1
ответ дан 18 December 2019 в 06:52
поделиться

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

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

1
ответ дан 18 December 2019 в 06:52
поделиться

В зависимости от какого файла Вы хотите защитить, можно использовать некоторый инструмент управления документооборотом. Adobe PDF имеет инструменты для этого. Кроме того, если Вы размещаете свое приложение на сервере приложений или веб-сервере, пользователи не могут получить доступ и изменить код. Таким образом, у Вас могла быть база данных хешей в серверной стороне файлов, которые Вы хотите защитить.

Конечно, защита только как хорошая в том, сколько времени и усилия Ваши пользователи хотели бы к (или может) вкладывать капитал в повреждение защиты.

0
ответ дан 18 December 2019 в 06:52
поделиться

Это - то, для чего хеши md5 и CRC, и вот почему Вы проверяете загруженные файлы из Интернета против их md5 файла, чтобы быть уверенными, что он не был угнан в пути.

Так или иначе я думаю, что Roddy использует C++, таким образом, я могу рекомендовать Повышение:: CRC его очень быстрое и мало служебное, Вы также не должны шифровать файл тот путь

0
ответ дан 18 December 2019 в 06:52
поделиться

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

Альтернатива является своего рода системой онлайн, которая добавляет огромные уровни сложности и обычно вскрываема так или иначе.

Взгляните на HMACs для шифруемого метода использования 'соли', как Вы думаете (где соль называют ключом вместо этого).

0
ответ дан 18 December 2019 в 06:52
поделиться