Форум сайта python.su
0
Программа для работы с фотографиями
Нужно сделать программы, которая бы по алгоритму перемещала пиксели и делала просто с фотографией полнейший хаус
Но чтобы была возможность потом это фото “расшифровать” и получалось опять нормальное фото
Нужны советы, что да как делать, я совсем не разбираюсь в этом и только начал изучать python 



Офлайн
253
Reijo13Зашифровать данные любым криптоалгоритмом. Тут и питон не нужен. Берете и архивируете изображение любым архиватором с указанием пароля.
Нужны советы, что да как делать
Офлайн
73
Reijo13для начала изучи что такое списки, матрицы потом попробуй получить фотографию в виде списка или матрицы ну а затем придумай алгоритм как изменить последовательность в этой матрице по заданному алгоритму и по тому же алгоритму наоборот вернуть все на исходные места
Нужны советы, что да как делать, я совсем не разбираюсь в этом и только начал изучать python
Офлайн
857
doza_andДа, а ещё лучше сразу программу для шифрования взять :) Ему нужно получить зашифрованное изображение в итоге.
Берете и архивируете изображение любым архиватором с указанием пароля.
Офлайн
568
doza_andЯ так понял, что ТС хочет, чтобы итоговый файл оставался тем не менее читаемым изображением, с белым шумом, но картинкой. Просто так зазипвать файл, не получится.
Зашифровать данные любым криптоалгоритмом. Тут и питон не нужен. Берете и архивируете изображение любым архиватором с указанием пароля.
Офлайн
221
FishHook
я тоже понял задачу именно так. В таком ракурсе она даже выглядит интересной что ли. Т.е. нужен алгоритм который может внести шум, и потом его ликвидировать.
Офлайн
88
Всё равно подходит шифрование, но только для данных о пикселах. Формат изображения должен подразумевать хранение/сжатие без потерь.
Офлайн
0
JOHN_16Да, именно так я и хочу, но только с png, ибо они не теряют качество вообще, но вот как это всё сделать без именно шифровки файла, как тут советуют?
FishHookя тоже понял задачу именно так. В таком ракурсе она даже выглядит интересной что ли. Т.е. нужен алгоритм который может внести шум, и потом его ликвидировать.
Офлайн
253
Кроме криптографии есть еще Стеганография. https://ru.wikipedia.org/wiki/%D0%A1%D1%82%D0%B5%D0%B3%D0%B0%D0%BD%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F
Тоже интересная область. Можете например взять картинку в 16 раз большего размера и в ней младшие биты поменять на биты своего изображения. Получится другая картинка в которой незаметно зашифрована ваша картинка. Если примените нетривиальный способ перестановки, то получится весьма криптостойкий метод хранения данных.
Правда все эти программы уже существуют, надо просто найти и использовать. Берете фотошопный плагин для встраивания водяных знаков и не парите мозг.
Отредактировано doza_and (Июнь 12, 2016 08:29:20)
Офлайн
568
# -*-coding:utf-8-*- import sys from PIL import Image import hashlib def get_key(): global secret global password if secret is None: secret = hashlib.sha256(password).hexdigest() return bytearray(secret) secret = hashlib.sha256(secret).hexdigest() return bytearray(secret) def get_pix_matrix(image): px = image.load() m = [] width, height = image.size for row in range(width-1): r = [] for col in range(height-1): a = px[row, col] r.append(a) m.append(r) return m def set_pix_matrix(image, matrix): px = image.load() for i, row in enumerate(matrix): for j, color in enumerate(row): px[i, j] = color def secure(matrix): result = [] for i, row in enumerate(matrix): result.append(xor(row)) return result def xor(text): result = [] while text: key = get_key() head, tail = text[:len(key)], text[len(key):] result += [x ^ y for x, y in zip(head, key[:len(head)])] text = tail return result if __name__ == "__main__": in_file = sys.argv[1] out_file = sys.argv[2] password = sys.argv[3] im = Image.open(in_file) secret = None matrix = get_pix_matrix(im) new_matrix = secure(matrix) set_pix_matrix(im, new_matrix) im.save(out_file)
Офлайн