Java: шифрование файла JPG внутри пакета .jar

#java #encryption #jar

#java #шифрование #jar

Вопрос:

При объединении некоторых изображений внутри пакета .jar (Java Swing), каков наилучший способ защитить файлы JPG внутри, чтобы пользователи не могли получить доступ к пакету и скопировать вышеупомянутые изображения для своих собственных?

Комментарии:

1. Отображаются ли изображения в приложении? Если да, то что может помешать конечному пользователю сделать снимок экрана? Прощай, картинка! Если бы кто-то доставил мне приложение., которое пыталось ограничить мой доступ к ресурсам, я бы запустил какого-нибудь робота, чтобы просмотреть каждую страницу / изображение, а затем сделать снимок экрана. Сохраните их на диск. Выполнено.

Ответ №1:

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

Или вы можете разделить изображения на случайные кадры и объединить их прямо перед отображением. В основном обсуйте данные.

Есть миллион способов быть честным, ха-ха, но на самом деле ни один из них не является надежным и не принесет больше проблем, чем стоит. В конце концов, вы собираетесь отобразить изображение в конечном итоге правильно? В этот момент «пользователь» может просто сделать снимок экрана.

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

Ответ №2:

Вы могли бы написать некоторый базовый код для симметричного шифрования / дешифрования ваших изображений. Это предотвратит кражу ваших изображений пользователем-любителем, но хакер сможет расшифровать их все за несколько часов. Пример симметричного шифрования см. http://www.java2s.com/Code/Java/Security/Basicsymmetricencryptionexample.htm

Ответ №3:

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

Комментарии:

1. Как изменение расширения файла имеет какой-либо эффект?

2. вы можете изменить его на расширение .something, которое пользователи не могут открыть, считайте это обычной сериализацией, вы сохраняете объект изображения в двоичный файл, в этом случае байты, составляющие файл, находятся в том же порядке, что и «реальное» изображение, кроме того, я не думаю, чтозабавно пытаться возиться со структурой файла изображения, шифруя его…

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

4. «вы можете зашифровать его с помощью пакета javax.crypto» Конечно, вы можете. Но если код может его расшифровать, пользователь может перепроектировать код, а затем расшифровать его самостоятельно. Первая идея была бессмыслицей, а вторая была бы неэффективной. -1

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