Автор Тема: Как зашифровать картинку формата .jpg ?  (Прочитано 10924 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн urrya [?]

  • Бывает фантазия реальна
  • Новичок
  • *
  • Сообщений: 159
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Доброго времени суток гос-да и возможно дамы.
Помогите пожалуйста зашифровать картинку jpg формата.
Я могу конечно это сделать с помощью архиватора, но это не то что надо.
Может быть зашифровку картинки возможно сделать как то силами Autoit ?

К примеру текстовый файл я шифрую вот так -
Код: AutoIt [Выделить]
Global $iDs = StringRegExpReplace("TestText 091", "[ ]", "")
$iDs = StringRegExpReplace($iDs, "[1]", "Q")
$iDs = StringRegExpReplace($iDs, "[2]", "W")
$iDs = StringRegExpReplace($iDs, "[3]", "E")
$iDs = StringRegExpReplace($iDs, "[4]", "R")
$iDs = StringRegExpReplace($iDs, "[5]", "T")
;--------------------------------------------------
$iDs = StringRegExpReplace($iDs, "[A]", "1")
$iDs = StringRegExpReplace($iDs, "[S]", "2")
$iDs = StringRegExpReplace($iDs, "[D]", "3")
$iDs = StringRegExpReplace($iDs, "[F]", "4")
$iDs = StringRegExpReplace($iDs, "[G]", "5")
 


но с картинкой этого не сделать к сожалению .

 :think:

Русское сообщество AutoIt

Как зашифровать картинку формата .jpg ?
« Отправлен: Апрель 17, 2015, 00:36:28 »

Оффлайн joiner [?]

  • Расмус-бродяга
  • Модератор
  • *
  • Сообщений: 2959
  • Репутация: 494
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #1, Отправлен: Апрель 17, 2015, 02:17:43 »
а зачем? :)
Были времена, когда солнце было ярче, трава зеленее, а водка сорокоградуснее

Оффлайн urrya [?]

  • Бывает фантазия реальна
  • Новичок
  • *
  • Сообщений: 159

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #2, Отправлен: Апрель 17, 2015, 09:28:09 »
а зачем? :)

Пишу программку, которая умеет делать картинки, но надо что бы эти самые "картинки" можно было просматривать только моей программкой.
 ;)

Русское сообщество AutoIt

Re: Как зашифровать картинку формата .jpg ?
« Ответ #2 Отправлен: Апрель 17, 2015, 09:28:09 »

Оффлайн joiner [?]

  • Расмус-бродяга
  • Модератор
  • *
  • Сообщений: 2959
  • Репутация: 494
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #3, Отправлен: Апрель 17, 2015, 10:29:06 »
можно использовать сжатие. в исходнике Autoit3Wrapper есть функции _WinAPI_LZNTCompress  и _WinAPI_LZNTDecompress
картинки читаем в бинарном режиме и сжимаем а потом , когда нужно просмотреть, наоборот делаем.
можно , как мне кажется, разбить картинку на блоки, к примеру, 10. и записать их в другом порядке. :)

Оффлайн urrya [?]

  • Бывает фантазия реальна
  • Новичок
  • *
  • Сообщений: 159

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #4, Отправлен: Апрель 17, 2015, 11:45:23 »
можно использовать сжатие. в исходнике Autoit3Wrapper есть функции _WinAPI_LZNTCompress  и _WinAPI_LZNTDecompress
картинки читаем в бинарном режиме и сжимаем а потом , когда нужно просмотреть, наоборот делаем.
можно , как мне кажется, разбить картинку на блоки, к примеру, 10. и записать их в другом порядке. :)

интересная идея по поводу разбития на блоки, а можно не большой пример кода с пояснениями?
 :think:


Тема решена.
Нашёл что нужно  ;)

http://autoit-script.ru/index.php?topic=4881.45
« Последнее редактирование: Апрель 17, 2015, 13:08:04 от urrya »

Русское сообщество AutoIt

Re: Как зашифровать картинку формата .jpg ?
« Ответ #4 Отправлен: Апрель 17, 2015, 11:45:23 »

Оффлайн joiner [?]

  • Расмус-бродяга
  • Модератор
  • *
  • Сообщений: 2959
  • Репутация: 494
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #5, Отправлен: Апрель 17, 2015, 13:06:08 »
сделал "по быстрому", но работает. скорее всего есть алгоритм получше
нужна одна картинка. в моем коде это foto.jpg
(нажмите для показа/скрытия)

Оффлайн urrya [?]

  • Бывает фантазия реальна
  • Новичок
  • *
  • Сообщений: 159

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #6, Отправлен: Апрель 17, 2015, 13:09:09 »
сделал "по быстрому", но работает. скорее всего есть алгоритм получше
нужна одна картинка. в моем коде это foto.jpg
(нажмите для показа/скрытия)


Большое спасибо за участие!
 :beer:


отлично работает -
Код: AutoIt [Выделить]
Global $fotos = @DesktopDir & '\111.jpg';исходный файл
Global $fotod = @DesktopDir & '\222.jpg';перемешанный
Global $fos = FileOpen($fotos, 16)
Global $fr = FileRead($fos)
Global $part = Ceiling(BinaryLen($fr) / 5)
FileSetPos($fos, 0, 0)
Global $strfile = DllStructCreate('byte[' & $part & '];byte[' & $part & '];byte[' & $part & '];byte[' & $part & '];byte[' & $part & ']')
Global $i = 1
Do
    $frp = FileRead($fos, $part)
    If @error = -1 Then ExitLoop
    DllStructSetData($strfile, $i, $frp)
    $i += 1
Until $i = 6
FileClose($fos)
;пишем, смещая блоки
Global $fod = FileOpen($fotod, 18)
FileWrite($fod, DllStructGetData($strfile, 5))
FileWrite($fod, DllStructGetData($strfile, 3))
FileWrite($fod, DllStructGetData($strfile, 1))
FileWrite($fod, DllStructGetData($strfile, 4))
FileWrite($fod, DllStructGetData($strfile, 2))
FileClose($fod)

;----------------------------------------------------------------------------------------------
;приводим в прежний вид
$new = @DesktopDir & '\333.jpg'  ;перемешанный
$fotod = @DesktopDir & '\222.jpg';читаемый как исходный
$fos = FileOpen($fotod, 16)
$fr = FileRead($fos)
$part = Ceiling(BinaryLen($fr) / 5)
FileSetPos($fos, 0, 0)
$strfile = DllStructCreate('byte[' & $part & '];byte[' & $part & '];byte[' & $part & '];byte[' & $part & '];byte[' & $part & ']')
$i = 1
Do
    $frp = FileRead($fos, $part)
    If @error = -1 Then ExitLoop
    DllStructSetData($strfile, $i, $frp)
    $i += 1
Until $i = 6
FileClose($fos)
;пишем, смещая блоки
$fod = FileOpen($new, 18)
FileWrite($fod, DllStructGetData($strfile, 3))
FileWrite($fod, DllStructGetData($strfile, 5))
FileWrite($fod, DllStructGetData($strfile, 2))
FileWrite($fod, DllStructGetData($strfile, 4))
FileWrite($fod, DllStructGetData($strfile, 1))
FileClose($fod)
 

« Последнее редактирование: Апрель 17, 2015, 22:01:12 от urrya »

Оффлайн VermanVendetta13 [?]

  • Новичок
  • *
  • Сообщений: 147
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #7, Отправлен: Апрель 19, 2015, 12:57:30 »
Что то я не понял как это работает.  Зашифровать то зашифровалось. А конечный 333.jpg не расшифрован.
Что надо сделать для того чтоб работало?

Русское сообщество AutoIt

Re: Как зашифровать картинку формата .jpg ?
« Ответ #7 Отправлен: Апрель 19, 2015, 12:57:30 »

Оффлайн urrya [?]

  • Бывает фантазия реальна
  • Новичок
  • *
  • Сообщений: 159

  • Автор темы
  • Репутация: 1
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #8, Отправлен: Апрель 19, 2015, 17:06:10 »
Что то я не понял как это работает.  Зашифровать то зашифровалось. А конечный 333.jpg не расшифрован.
Что надо сделать для того чтоб работало?

вот как раз таки 333.jpg уже расшифрован, а 222.jpg это зашифрованная картинка  ;)

Оффлайн VermanVendetta13 [?]

  • Новичок
  • *
  • Сообщений: 147
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #9, Отправлен: Апрель 19, 2015, 18:11:08 »
Что то я не понял как это работает.  Зашифровать то зашифровалось. А конечный 333.jpg не расшифрован.
Что надо сделать для того чтоб работало?

вот как раз таки 333.jpg уже расшифрован, а 222.jpg это зашифрованная картинка  ;)
.

Ну вот как раз таки и нет. На оба файла пишет нельзя

Оффлайн joiner [?]

  • Расмус-бродяга
  • Модератор
  • *
  • Сообщений: 2959
  • Репутация: 494
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #10, Отправлен: Апрель 19, 2015, 23:22:59 »
одна функция для смешивания и восстановления файла. даже если по ошибке изменили файл, то его можно восстановить. файл не меняет имени и расширения
Код: AutoIt [Выделить]
$pic = @ScriptDir & '\foto.jpg';для файлов не более 40мб
_CryptDecrypt($pic)
Func _CryptDecrypt($File)
    Local $part = FileGetSize($File) / 4
    If $part > (1048576 * 10) Then Return False
    Local $horigin = FileOpen($File, 16)
    If $horigin = -1 Then Return False
    Local $bindata = FileRead($horigin)
    If @error = -1 Then Return False
    FileClose($horigin)
    Local $strfile = DllStructCreate('byte[' & $part & '];byte[' & $part & '];byte[' & $part & '];byte[' & $part & ']')
    Local $b = 1, $frp
    For $i = 1 To 4
        $frp = BinaryMid($bindata, $b, $part)
        DllStructSetData($strfile, $i, $frp)
        $b += $part
    Next
    Local $hmixed = FileOpen($File, 18)
    If $hmixed = -1 Then Return False
    FileWrite($hmixed, DllStructGetData($strfile, 4))
    FileWrite($hmixed, DllStructGetData($strfile, 2))
    FileWrite($hmixed, DllStructGetData($strfile, 3))
    FileWrite($hmixed, DllStructGetData($strfile, 1))
    FileClose($hmixed)
    Return True
EndFunc   ;==>_CryptDecrypt
 

« Последнее редактирование: Апрель 20, 2015, 13:15:16 от joiner »

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Как зашифровать картинку формата .jpg ?
« Ответ #11, Отправлен: Апрель 20, 2015, 05:53:17 »
joiner,
А зачем Вы два раза читаете файл? Размер можно ведь получить через FileGetSize().

Оффлайн joiner [?]

  • Расмус-бродяга
  • Модератор
  • *
  • Сообщений: 2959
  • Репутация: 494
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.12.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #12, Отправлен: Апрель 20, 2015, 08:52:08 »
исправил

Оффлайн madmasles [?]

  • Глобальный модератор
  • *
  • Сообщений: 7790
  • Репутация: 2317
  • Пол: Мужской
  • Награды За модерирование форума
    • Награды
  • Версия AutoIt: 3.3.x.x
Re: Как зашифровать картинку формата .jpg ?
« Ответ #13, Отправлен: Апрель 20, 2015, 09:09:31 »
urrya,
Сделал функцию перемешивания файла и возврата его в исходное состояние.
(нажмите для показа/скрытия)


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Апрель 20, 2015, 09:21:24 от madmasles »

Оффлайн VermanVendetta13 [?]

  • Новичок
  • *
  • Сообщений: 147
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Как зашифровать картинку формата .jpg ?
« Ответ #14, Отправлен: Апрель 21, 2015, 00:11:28 »
urrya,
Сделал функцию перемешивания файла и возврата его в исходное состояние.
(нажмите для показа/скрытия)


вот этот вариант идеальный, но один вопрос. можно ли каким нибудь образом добавить ваш код в этот скрипт?

(нажмите для показа/скрытия)

я так попытался это сделать, заменив File.jpg на $file.. но чтот не так


и ище кое что осталось мне не ясным. что это такое?
Код: AutoIt [Выделить]
 Local Const $s_HexStr = '8C1006DBD60E18CC92AD18834F047F3C8D8F678ACE598CF0A95E747A5286D9778F85E427710363AC'
 

« Последнее редактирование: Апрель 21, 2015, 00:16:51 от VermanVendetta13 »

Русское сообщество AutoIt

Re: Как зашифровать картинку формата .jpg ?
« Ответ #14 Отправлен: Апрель 21, 2015, 00:11:28 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
16 Ответов
9246 Просмотров
Последний ответ Июнь 28, 2010, 10:39:20
от 11exx
4 Ответов
1796 Просмотров
Последний ответ Апрель 19, 2015, 20:04:00
от urrya
5 Ответов
3985 Просмотров
Последний ответ Апрель 24, 2015, 02:45:57
от joiner
9 Ответов
2443 Просмотров
Последний ответ Июнь 04, 2015, 01:26:16
от Yashied
5 Ответов
1573 Просмотров
Последний ответ Июнь 11, 2015, 15:06:52
от saraconor
1 Ответов
1161 Просмотров
Последний ответ Июль 21, 2015, 18:51:01
от madmasles
6 Ответов
1725 Просмотров
Последний ответ Июль 27, 2016, 08:33:52
от joiner
2 Ответов
559 Просмотров
Последний ответ Январь 11, 2018, 07:11:05
от Boris
2 Ответов
1337 Просмотров
Последний ответ Сентябрь 01, 2018, 04:18:55
от Murikipak
22 Ответов
1418 Просмотров
Последний ответ Июль 05, 2019, 03:08:30
от Andrey_A