]> granicus.if.org Git - imagemagick/blob - www/cipher.html
(no commit message)
[imagemagick] / www / cipher.html
1
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
3   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4 <html version="-//W3C//DTD XHTML 1.1//EN"
5       xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
6       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
7       xsi:schemaLocation="http://www.w3.org/1999/xhtml
8                           http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd">
9 <head>
10   <meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
11   <meta name=viewport content="width=device-width, initial-scale=0.3333334">
12   <meta name="google-site-verification" content="_bMOCDpkx9ZAzBwb2kF3PRHbfUUdFj2uO8Jd1AXArz4"/>
13   <title>ImageMagick: Encipher or Decipher an Image</title>
14   <meta http-equiv="content-language" content="en-US"/>
15   <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
16   <meta http-equiv="reply-to" content="magick-users@imagemagick.org"/>
17   <meta name="application-name" content="ImageMagick"/>
18   <meta name="description" content="A collection of tools and libraries to read, write, and manipulate an image in any of the more popular image formats."/>
19   <meta name="application-url" content="http://www.imagemagick.org"/>
20   <meta name="generator" content="PHP"/>
21   <meta name="keywords" content="encipher, or, decipher, an, image, convert, edit, compose, image, pixel"/>
22   <meta name="rating" content="GENERAL"/>
23   <meta name="robots" content="INDEX, FOLLOW"/>
24   <meta name="generator" content="ImageMagick Studio LLC"/>
25   <meta name="author" content="ImageMagick Studio LLC"/>
26   <meta name="revisit-after" content="2 DAYS"/>
27   <meta name="resource-type" content="document"/>
28   <meta name="copyright" content="Copyright (c) 1999-2012 ImageMagick Studio LLC"/>
29   <meta name="distribution" content="Global"/>
30   <link rel="icon" href="../images/wand.png"/>
31   <link rel="shortcut icon" href="../images/wand.ico" type="images/x-icon"/>
32   <link rel="canonical" href="http://www.imagemagick.org" />
33   <link rel="meta" type="application/rdf+xml" title="ICI" href="http://imagemagick.org/ici.rdf"/>
34
35   <!-- Add jQuery library -->
36   <script type="text/javascript" src="http://localhost/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
37   
38   <!-- Add mousewheel plugin (this is optional) -->
39   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/lib/jquery.mousewheel-3.0.6.pack.js"></script>
40   
41   <!-- Add fancyBox -->
42   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/jquery.fancybox.css?v=2.1.5" type="text/css" media="screen" />
43   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/jquery.fancybox.pack.js?v=2.1.5"></script>
44   
45   <!-- Optionally add helpers - button, thumbnail and/or media -->
46   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-buttons.css?v=1.0.5" type="text/css" media="screen" />
47   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-buttons.js?v=1.0.5"></script>
48   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-media.js?v=1.0.6"></script>
49   
50   <link rel="stylesheet" href="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-thumbs.css?v=1.0.7" type="text/css" media="screen" />
51   <script type="text/javascript" src="http://www.imagemagick.org/fancybox/source/helpers/jquery.fancybox-thumbs.js?v=1.0.7"></script>
52   
53   <script type="text/javascript">
54         $(document).ready(function() {
55                 $(".fancybox").fancybox();
56         });
57   </script>
58
59   <!-- ImageMagick style -->
60   <style type="text/css" media="all">
61     @import url("../www/magick.css");
62   </style>
63 </head>
64
65 <body id="www-imagemagick-org">
66
67 <script type="text/javascript">
68   (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
69   (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
70   m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
71   })(window,document,'offline-script','//www.google-analytics.com/analytics.js','ga');
72
73   ga('create', 'UA-40133312-1', 'imagemagick.org');
74   ga('send', 'pageview');
75 </script>
76
77 <div class="titlebar">
78 <div style="margin: 17px auto; float: left;">
79   <script type="text/javascript">
80   <!--
81     google_ad_client = "pub-3129977114552745";
82     google_ad_slot = "5439289906";
83     google_ad_width = 728;
84     google_ad_height = 90;
85   //-->
86   </script>
87   <script type="text/javascript"
88     src="http://localhost/pagead/show_ads.js">
89   </script>
90 </div>
91 <a href="../discourse-server">
92   <img src="../images/logo.jpg"
93   alt="ImageMagick Logo" width="123" height="118"
94   style="width: 123px; height: 118px; border: 0px; float: right;" /></a>
95 <a href="http://www.imagemagick.org/ImageMagick-7.0.0/index.html">
96   <img src="../images/sprite.jpg"
97   alt="ImageMagick Sprite" width="114" height="118"
98   style="width: 114px; height: 118px; border: 0px; float: right;" /></a>
99 </div>
100
101 <div class="westbar">
102
103 <div class="menu">
104   <a title="About ImageMagick" href="http://www.imagemagick.org/ImageMagick-7.0.0/index.html">About ImageMagick</a>
105 </div>
106 <div class="menu">
107   <a title="Binary Releases" href="binary-releases.html">Binary Releases</a>
108 </div>
109 <div class="sub">
110     <a title="Binary Release: Unix" href="binary-releases.html#unix">Unix</a>
111 </div>
112 <div class="sub">
113     <a title="Binary Release: MacOS X" href="binary-releases.html#macosx">Mac OS X</a>
114 </div>
115 <div class="sub">
116     <a title="Binary Release: iOS" href="binary-releases.html#iOS">iOS</a>
117 </div>
118 <div class="sub">
119     <a title="Binary Release: Windows" href="binary-releases.html#windows">Windows</a>
120 </div>
121 <div class="sep"></div>
122 <div class="menu">
123   <a title="Command-line Tools" href="command-line-tools.html">Command-line Tools</a>
124 </div>
125 <div class="sub">
126     <a title="Command-line Tools: Processing" href="command-line-processing.html">Processing</a>
127 </div>
128 <div class="sub">
129     <a title="Command-line Tools: Options" href="command-line-options.html">Options</a>
130 </div>
131 <div class="sub">
132     <a title="Command-line Tools: Usage" href="http://www.imagemagick.org/Usage/">Usage</a>
133 </div>
134 <div class="menu">
135   <a title="Program Interfaces" href="api.html">Program Interfaces</a>
136 </div>
137 <div class="sub">
138     <a title="Program Interface: MagickWand" href="magick-wand.html">MagickWand</a>
139 </div>
140 <div class="sub">
141     <a title="Program Interface: MagickCore" href="magick-core.html">MagickCore</a>
142 </div>
143 <div class="sub">
144     <a title="Program Interface: PerlMagick" href="perl-magick.html">PerlMagick</a>
145 </div>
146 <div class="sub">
147     <a title="Program Interface: Magick++" href="magick++.html">Magick++</a>
148 </div>
149 <div class="sep"></div>
150 <div  class="menu">
151    <a title="Install from Source" href="install-source.html">Install from Source</a>
152 </div>
153 <div class="sub">
154     <a title="Install from Source: Unix" href="install-source.html#unix">Unix</a>
155 </div>
156 <div class="sub">
157     <a title="Install from Source: Windows" href="install-source.html#windows">Windows</a>
158  </div>
159 <div class="menu">
160   <a title="Resources" href="resources.html">Resources</a>
161 </div>
162 <div class="menu">
163   <a title="Architecture" href="architecture.html">Architecture</a>
164 </div>
165 <div class="menu">
166   <a title="Download" href="download.html">Download</a>
167 </div>
168 <div class="sep"></div>
169 <div class="menu">
170   <a title="Search" href="search.html">Search</a>
171 </div>
172 <div class="sep"></div>
173 <div class="menu">
174   <a title="Site Map" href="sitemap.html">Site Map</a>
175 </div>
176 <div  class="sub">
177   <a title="Site Map: Links" href="links.html">Links</a>
178 </div>
179 <div class="sep"></div>
180 </div>
181
182 <div class="eastbar">
183   <script type="text/javascript">
184     /* <![CDATA[ */
185     window.___gcfg = {
186       lang: 'en-US'
187     };
188
189     (function() {
190       var po = document.createElement('offline-script');
191       po.type = 'text/javascript';
192       po.async = true;
193       po.src = 'https://apis.google.com/js/plusone.js';
194       var script = document.getElementsByTagName('offline-script')[0];
195       script.parentNode.insertBefore(po, script);
196     })();
197     var gplusone = document.getElementById("gplusone");
198     gplusone.setAttribute("data-size","medium");
199     gplusone.setAttribute("data-count","true");
200     /* ]]> */
201   </script>
202   <script type="text/javascript">
203     /* <![CDATA[ */
204     (function() {
205         var po = document.createElement('offline-script'), t = document.getElementsByTagName('offline-script')[0];
206         po.type = 'text/javascript';
207         po.async = true;
208         po.src = 'http://api.flattr.com/js/0.6/load.js?mode=auto';
209         var script = document.getElementsByTagName('offline-script')[0];
210         script.parentNode.insertBefore(po, script);
211     })();
212     /* ]]> */
213   </script>
214   <div> <a class="FlattrButton" style="display:none;" rev="flattr;button:compact;" href="http://www.imagemagick.org/"></a></div>
215   <noscript>
216     <a href="http://flattr.com/thing/947300/Convert-Edit-And-Compose-Images" target="_blank">
217     <img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" width="93" height="20" border="0" /></a>
218   </noscript>
219   <div class="g-plusone" data-size="standard" data-count="true"></div>
220 </div>
221
222 <div class="main">
223
224 <h1>Enciphering and Deciphering Images</h1>
225 <p class="navigation-index">[<a href="cipher.html#encipher">Encipher an Image</a> • <a href="cipher.html#decipher">Decipher an Image</a> • <a href="cipher.html#caveats">Encipher and Decipher Caveats</a>]</p>
226
227 <div class="doc-section">
228
229 <p>Most images, by design, are made to be viewed often and by many people.  Web images, for example, may be viewed hundreds of times a day by a multitude of vistors.  However, in some cases, you may want to keep a particular image private so that only you or perhaps a select group of your friends or web visitors can view it.  ImageMagick permits you to scramble your images such that unless someone knows your passphrase, they will be unable to view the original content.</p>
230
231 <p>You could use an <a href="http://www.wizards-toolkit.org/www/encipher.html">enciphering</a> utility to scramble your image but they typically scramble the entire file making it unrecognizable as an image format.  With ImageMagick, only the pixels are scrambled.  The scrambled image continues to be recognized as an image and will even display in your web page.  However, the content appears as gibberish, nothing like the original content.</p>
232
233 </div>
234
235 <h2><a id="encipher"></a>Encipher an Image</h2>
236 <div class="doc-section">
237
238 <p>Use the <a href="command-line-options.html#encipher">-encipher</a> option to scramble your image so that it is unrecognizable.  The option requires a filename that contains your passphrase.  In this example we scramble an image and save it in the PNG format:</p>
239
240 <p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>convert rose.jpg -encipher passphrase.txt rose.png</span></p>
241 <p>Here we encipher an image using another image as the passphrase:</p>
242
243 <p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>convert rose.jpg -encipher smiley.gif rose.png</span></p>
244 </div>
245
246 <h2><a id="decipher"></a>Decipher an Image</h2>
247 <div class="doc-section">
248
249 <p>Use the <a href="command-line-options.html#decipher">-decipher</a> option to unscramble your image so that it is recognizable once again.  The option requires a filename that contains your passphrase.  In this example we unscramble an image and save it in the JPEG format:</p>
250
251 <p class='crt'><span class="crtprompt"> $magick&gt; </span><span class='crtin'>convert rose.png -decipher passphrase.txt rose.jpg</span></p>
252 </div>
253
254 <h2><a id="caveats"></a>Encipher and Decipher Caveats</h2>
255 <div class="doc-section">
256
257 <p>Some formats do not support enciphered pixels-- the JPEG or GIF format, for
258 example.  To ensure your image format is supported, encipher a test image and
259 verify you can restore its original content <em>before</em> you encipher any
260 additional images in that format.</p>
261
262 <p>The image format may only support 8-bit and RGB (TrueColor). As such you may
263 like to include the options "-depth 8 -type TrueColor" before the output
264 filename.</p>
265
266 <p>The passphrase can be any combinations of letters and symbols.  It should
267 be a minimum of 12 character combinations to help ensure your image remains
268 private.  Also make sure your passphrase file permissions prevent others from
269 reading it otherwise unintended users may be able to view the original image
270 content.</p>
271
272 <p>You can only restore the original image content if you know your
273 passphrase.  If you lose or forget it, your original image content is lost
274 forever.</p>
275
276 <p>ImageMagick only scrambles the image pixels.  The image metadata remains
277 untouched and readable by anyone with access to the image file.</p>
278
279 <p>ImageMagick uses the <a
280 href="http://en.wikipedia.org/wiki/Advanced_Encryption_Standard">AES</a>
281 cipher in Counter mode.  We use the the first half of your passphrase to derive the nonce.  The second half is the cipher key. When used correctly, AES-CTR provides a high level of confidentiality. To avoid information leaks, you must use a fresh passphrase for each image your encrypt.</p>
282
283 <p>Currently only ImageMagick can restore your enciphered image content.  We
284 use a standard cipher and mode so other vendors are could support enciphered image content.</p>
285
286 <p>Some small practical examples of image enciphering can be found in IM
287 Examples <a href="http://www.imagemagick.org/Usage/transform/#encipher"
288 >Encrypting Image Data</a>. </p>
289
290 </div>
291
292 </div>
293
294 <div id="linkbar">
295     <span id="linkbar-west"> </span>
296
297     <span id="linkbar-center">
298       <a href="../discourse-server">Discourse Server</a> •
299       <a href="http://pgp.mit.edu:11371/pks/lookup?op=get&amp;search=0x89AB63D48277377A">Public Key</a> •
300       <a href="http://www.imagemagick.org/MagickStudio/scripts/MagickStudio.cgi">Studio</a> •
301       <a href="http://jqmagick.imagemagick.org/">JqMagick</a>
302     </span>
303     <span id="linkbar-east"> </span>
304 </div>
305 <div class="footer">
306   <span id="footer-west">©  1999-2015 ImageMagick Studio LLC</span>
307   <span id="footer-east"> <a href="contact.html">Contact the Wizards</a></span>
308 </div>
309 <div style="clear: both; margin: 0; width: 100%; "></div>
310 </body>
311 </html>