]> git.ipfire.org Git - thirdparty/openssl.git/blame - doc/man1/openssl-enc.pod
Command docs: remove ellipses for '-rand'
[thirdparty/openssl.git] / doc / man1 / openssl-enc.pod
CommitLineData
a0e9f529 1=pod
19d2bb57 2
a0e9f529
DSH
3=head1 NAME
4
b6b66573 5openssl-enc - symmetric cipher routines
a0e9f529
DSH
6
7=head1 SYNOPSIS
8
e8769719 9B<openssl>
8dc57d76 10[B<-I<cipher>>]
169394d4 11[B<-help>]
3b5bea36 12[B<-ciphers>]
e8769719
RS
13[B<-in> I<filename>]
14[B<-out> I<filename>]
15[B<-pass> I<arg>]
a0e9f529
DSH
16[B<-e>]
17[B<-d>]
e75138ab
RS
18[B<-a>]
19[B<-base64>]
a0e9f529 20[B<-A>]
e8769719
RS
21[B<-k> I<password>]
22[B<-kfile> I<filename>]
23[B<-K> I<key>]
24[B<-iv> I<IV>]
25[B<-S> I<salt>]
e5fa864f
DSH
26[B<-salt>]
27[B<-nosalt>]
28[B<-z>]
e8769719
RS
29[B<-md> I<digest>]
30[B<-iter> I<count>]
405988f2 31[B<-pbkdf2>]
a0e9f529
DSH
32[B<-p>]
33[B<-P>]
e8769719 34[B<-bufsize> I<number>]
f2e5ca84 35[B<-nopad>]
a0e9f529 36[B<-debug>]
e5fa864f 37[B<-none>]
fed8bd90 38[B<-rand> I<files>]
e8769719
RS
39[B<-writerand> I<file>]
40[B<-engine> I<id>]
a0e9f529 41
1738c0ce
RS
42=for comment ifdef z engine
43
e8769719 44B<openssl> I<cipher> [B<...>]
e75138ab 45
a0e9f529
DSH
46=head1 DESCRIPTION
47
19d2bb57 48The symmetric cipher commands allow data to be encrypted or decrypted
a0e9f529
DSH
49using various block and stream ciphers using keys based on passwords
50or explicitly provided. Base64 encoding or decoding can also be performed
51either by itself or in addition to the encryption or decryption.
52
53=head1 OPTIONS
54
55=over 4
56
169394d4
MR
57=item B<-help>
58
59Print out a usage message.
60
3b5bea36
RS
61=item B<-ciphers>
62
63List all supported ciphers.
64
e8769719 65=item B<-in> I<filename>
a0e9f529 66
3fd5ece3 67The input filename, standard input by default.
a0e9f529 68
e8769719 69=item B<-out> I<filename>
a0e9f529 70
3fd5ece3 71The output filename, standard output by default.
a0e9f529 72
e8769719 73=item B<-pass> I<arg>
cd3c54e5 74
3fd5ece3 75The password source. For more information about the format of B<arg>
e8769719 76see L<openssl(1)/Pass phrase options>.
cd3c54e5 77
a0e9f529
DSH
78=item B<-e>
79
3fd5ece3 80Encrypt the input data: this is the default.
a0e9f529
DSH
81
82=item B<-d>
83
3fd5ece3 84Decrypt the input data.
a0e9f529
DSH
85
86=item B<-a>
87
3fd5ece3 88Base64 process the data. This means that if encryption is taking place
a0e9f529
DSH
89the data is base64 encoded after encryption. If decryption is set then
90the input data is base64 decoded before being decrypted.
91
e5fa864f
DSH
92=item B<-base64>
93
3fd5ece3 94Same as B<-a>
e5fa864f 95
a0e9f529
DSH
96=item B<-A>
97
3fd5ece3 98If the B<-a> option is set then base64 process the data on one line.
a0e9f529 99
e8769719 100=item B<-k> I<password>
a0e9f529 101
3fd5ece3 102The password to derive the key from. This is for compatibility with previous
cd3c54e5 103versions of OpenSSL. Superseded by the B<-pass> argument.
a0e9f529 104
e8769719 105=item B<-kfile> I<filename>
a0e9f529 106
3fd5ece3 107Read the password to derive the key from the first line of B<filename>.
e544b0dc 108This is for compatibility with previous versions of OpenSSL. Superseded by
cd3c54e5 109the B<-pass> argument.
a0e9f529 110
e8769719 111=item B<-md> I<digest>
9e8b6f04
RS
112
113Use the specified digest to create the key from the passphrase.
114The default algorithm is sha-256.
115
e8769719 116=item B<-iter> I<count>
405988f2
E
117
118Use a given number of iterations on the password in deriving the encryption key.
119High values increase the time required to brute-force the resulting file.
120This option enables the use of PBKDF2 algorithm to derive the key.
121
122=item B<-pbkdf2>
123
124Use PBKDF2 algorithm with default iteration count unless otherwise specified.
125
e5fa864f
DSH
126=item B<-nosalt>
127
3fd5ece3 128Don't use a salt in the key derivation routines. This option B<SHOULD NOT> be
ed233db7
RS
129used except for test purposes or compatibility with ancient versions of
130OpenSSL.
e5fa864f
DSH
131
132=item B<-salt>
133
3fd5ece3
P
134Use salt (randomly generated or provide with B<-S> option) when
135encrypting, this is the default.
e5fa864f 136
e8769719 137=item B<-S> I<salt>
fd699ac5 138
3fd5ece3 139The actual salt to use: this must be represented as a string of hex digits.
fd699ac5 140
e8769719 141=item B<-K> I<key>
a0e9f529 142
3fd5ece3 143The actual key to use: this must be represented as a string comprised only
43f9391b
LJ
144of hex digits. If only the key is specified, the IV must additionally specified
145using the B<-iv> option. When both a key and a password are specified, the
146key given with the B<-K> option will be used and the IV generated from the
3fd5ece3
P
147password will be taken. It does not make much sense to specify both key
148and password.
a0e9f529 149
e8769719 150=item B<-iv> I<IV>
a0e9f529 151
3fd5ece3 152The actual IV to use: this must be represented as a string comprised only
43f9391b
LJ
153of hex digits. When only the key is specified using the B<-K> option, the
154IV must explicitly be defined. When a password is being specified using
155one of the other options, the IV is generated from this password.
a0e9f529
DSH
156
157=item B<-p>
158
3fd5ece3 159Print out the key and IV used.
a0e9f529
DSH
160
161=item B<-P>
162
3fd5ece3 163Print out the key and IV used then immediately exit: don't do any encryption
a0e9f529
DSH
164or decryption.
165
e8769719 166=item B<-bufsize> I<number>
a0e9f529 167
3fd5ece3 168Set the buffer size for I/O.
a0e9f529 169
f2e5ca84
DSH
170=item B<-nopad>
171
3fd5ece3 172Disable standard block padding.
f2e5ca84 173
a0e9f529
DSH
174=item B<-debug>
175
3fd5ece3 176Debug the BIOs used for I/O.
a0e9f529 177
e5fa864f
DSH
178=item B<-z>
179
180Compress or decompress clear text using zlib before encryption or after
181decryption. This option exists only if OpenSSL with compiled with zlib
182or zlib-dynamic option.
183
184=item B<-none>
185
186Use NULL cipher (no encryption or decryption of input).
187
fed8bd90 188=item B<-rand> I<files>
3ee1eac2 189
fed8bd90 190The files containing random data used to seed the random number generator.
3ee1eac2
RS
191Multiple files can be specified separated by an OS-dependent character.
192The separator is B<;> for MS-Windows, B<,> for OpenVMS, and B<:> for
193all others.
194
e8769719 195=item B<-writerand> I<file>
3ee1eac2
RS
196
197Writes random data to the specified I<file> upon exit.
198This can be used with a subsequent B<-rand> flag.
199
a0e9f529
DSH
200=back
201
202=head1 NOTES
203
e75138ab
RS
204The program can be called either as B<openssl cipher> or
205B<openssl enc -cipher>. The first form doesn't work with
e5fa864f
DSH
206engine-provided ciphers, because this form is processed before the
207configuration file is read and any ENGINEs loaded.
e75138ab 208Use the B<list> command to get a list of supported ciphers.
e5fa864f 209
3fd5ece3 210Engines which provide entirely new encryption algorithms (such as the ccgost
e5fa864f 211engine which provides gost89 algorithm) should be configured in the
3fd5ece3 212configuration file. Engines specified on the command line using -engine
4c583c36 213options can only be used for hardware-assisted implementations of
3fd5ece3 214ciphers which are supported by the OpenSSL core or another engine specified
e5fa864f
DSH
215in the configuration file.
216
3fd5ece3 217When the enc command lists supported ciphers, ciphers provided by engines,
e5fa864f 218specified in the configuration files are listed too.
a0e9f529
DSH
219
220A password will be prompted for to derive the key and IV if necessary.
221
6d1b637b 222The B<-salt> option should B<ALWAYS> be used if the key is being derived
19d2bb57 223from a password unless you want compatibility with previous versions of
b0700d2c 224OpenSSL.
fd699ac5
DSH
225
226Without the B<-salt> option it is possible to perform efficient dictionary
227attacks on the password and to attack stream cipher encrypted data. The reason
228for this is that without the salt the same password always generates the same
229encryption key. When the salt is being used the first eight bytes of the
230encrypted data are reserved for the salt: it is generated at random when
231encrypting a file and read from the encrypted file when it is decrypted.
232
4abc5c62
DSH
233Some of the ciphers do not have large keys and others have security
234implications if not used correctly. A beginner is advised to just use
3fd5ece3 235a strong block cipher, such as AES, in CBC mode.
4abc5c62 236
3fd5ece3
P
237All the block ciphers normally use PKCS#5 padding, also known as standard
238block padding. This allows a rudimentary integrity or password check to
239be performed. However since the chance of random data passing the test
240is better than 1 in 256 it isn't a very good test.
a0e9f529 241
3b80e3aa 242If padding is disabled then the input data must be a multiple of the cipher
f2e5ca84
DSH
243block length.
244
a0e9f529
DSH
245All RC2 ciphers have the same key and effective key length.
246
247Blowfish and RC5 algorithms use a 128 bit key.
248
249=head1 SUPPORTED CIPHERS
250
e5fa864f
DSH
251Note that some of these ciphers can be disabled at compile time
252and some are available only if an appropriate engine is configured
253in the configuration file. The output of the B<enc> command run with
3fd5ece3 254the B<-ciphers> option (that is B<openssl enc -ciphers>) produces a
4c583c36 255list of ciphers, supported by your version of OpenSSL, including
e5fa864f
DSH
256ones provided by configured engines.
257
d4b47504 258The B<enc> program does not support authenticated encryption modes
272cc20b
BK
259like CCM and GCM, and will not support such modes in the future.
260The B<enc> interface by necessity must begin streaming output (e.g.,
eadde90b 261to standard output when B<-out> is not used) before the authentication
272cc20b
BK
262tag could be validated, leading to the usage of B<enc> in pipelines
263that begin processing untrusted data and are not capable of rolling
264back upon authentication failure. The AEAD modes currently in common
265use also suffer from catastrophic failure of confidentiality and/or
266integrity upon reuse of key/iv/nonce, and since B<enc> places the
267entire burden of key/iv/nonce management upon the user, the risk of
268exposing AEAD modes is too great to allow. These key/iv/nonce
269management issues also affect other modes currently exposed in B<enc>,
270but the failure modes are less extreme in these cases, and the
271functionality cannot be removed with a stable release branch.
272For bulk encryption of data, whether using authenticated encryption
273modes or other modes, L<cms(1)> is recommended, as it provides a
274standard data format and performs the needed key/iv/nonce management.
d4b47504 275
e5fa864f 276
a0e9f529
DSH
277 base64 Base 64
278
279 bf-cbc Blowfish in CBC mode
280 bf Alias for bf-cbc
41a6fa74 281 blowfish Alias for bf-cbc
19d2bb57 282 bf-cfb Blowfish in CFB mode
a0e9f529
DSH
283 bf-ecb Blowfish in ECB mode
284 bf-ofb Blowfish in OFB mode
285
286 cast-cbc CAST in CBC mode
287 cast Alias for cast-cbc
288 cast5-cbc CAST5 in CBC mode
289 cast5-cfb CAST5 in CFB mode
290 cast5-ecb CAST5 in ECB mode
291 cast5-ofb CAST5 in OFB mode
292
41a6fa74
PY
293 chacha20 ChaCha20 algorithm
294
a0e9f529
DSH
295 des-cbc DES in CBC mode
296 des Alias for des-cbc
47c07020 297 des-cfb DES in CFB mode
a0e9f529
DSH
298 des-ofb DES in OFB mode
299 des-ecb DES in ECB mode
300
301 des-ede-cbc Two key triple DES EDE in CBC mode
701d35d1 302 des-ede Two key triple DES EDE in ECB mode
a0e9f529
DSH
303 des-ede-cfb Two key triple DES EDE in CFB mode
304 des-ede-ofb Two key triple DES EDE in OFB mode
305
306 des-ede3-cbc Three key triple DES EDE in CBC mode
701d35d1 307 des-ede3 Three key triple DES EDE in ECB mode
a0e9f529
DSH
308 des3 Alias for des-ede3-cbc
309 des-ede3-cfb Three key triple DES EDE CFB mode
310 des-ede3-ofb Three key triple DES EDE in OFB mode
311
312 desx DESX algorithm.
313
e5fa864f 314 gost89 GOST 28147-89 in CFB mode (provided by ccgost engine)
1bc74519 315 gost89-cnt `GOST 28147-89 in CNT mode (provided by ccgost engine)
e5fa864f 316
a0e9f529
DSH
317 idea-cbc IDEA algorithm in CBC mode
318 idea same as idea-cbc
319 idea-cfb IDEA in CFB mode
320 idea-ecb IDEA in ECB mode
321 idea-ofb IDEA in OFB mode
322
323 rc2-cbc 128 bit RC2 in CBC mode
324 rc2 Alias for rc2-cbc
60021d91
RL
325 rc2-cfb 128 bit RC2 in CFB mode
326 rc2-ecb 128 bit RC2 in ECB mode
327 rc2-ofb 128 bit RC2 in OFB mode
a0e9f529
DSH
328 rc2-64-cbc 64 bit RC2 in CBC mode
329 rc2-40-cbc 40 bit RC2 in CBC mode
330
331 rc4 128 bit RC4
332 rc4-64 64 bit RC4
333 rc4-40 40 bit RC4
334
335 rc5-cbc RC5 cipher in CBC mode
336 rc5 Alias for rc5-cbc
60021d91
RL
337 rc5-cfb RC5 cipher in CFB mode
338 rc5-ecb RC5 cipher in ECB mode
339 rc5-ofb RC5 cipher in OFB mode
a0e9f529 340
41a6fa74
PY
341 seed-cbc SEED cipher in CBC mode
342 seed Alias for seed-cbc
343 seed-cfb SEED cipher in CFB mode
344 seed-ecb SEED cipher in ECB mode
345 seed-ofb SEED cipher in OFB mode
346
347 sm4-cbc SM4 cipher in CBC mode
348 sm4 Alias for sm4-cbc
349 sm4-cfb SM4 cipher in CFB mode
350 sm4-ctr SM4 cipher in CTR mode
351 sm4-ecb SM4 cipher in ECB mode
352 sm4-ofb SM4 cipher in OFB mode
353
1bc74519
RS
354 aes-[128|192|256]-cbc 128/192/256 bit AES in CBC mode
355 aes[128|192|256] Alias for aes-[128|192|256]-cbc
356 aes-[128|192|256]-cfb 128/192/256 bit AES in 128 bit CFB mode
357 aes-[128|192|256]-cfb1 128/192/256 bit AES in 1 bit CFB mode
358 aes-[128|192|256]-cfb8 128/192/256 bit AES in 8 bit CFB mode
3fd5ece3 359 aes-[128|192|256]-ctr 128/192/256 bit AES in CTR mode
1bc74519
RS
360 aes-[128|192|256]-ecb 128/192/256 bit AES in ECB mode
361 aes-[128|192|256]-ofb 128/192/256 bit AES in OFB mode
330591fd 362
41a6fa74
PY
363 aria-[128|192|256]-cbc 128/192/256 bit ARIA in CBC mode
364 aria[128|192|256] Alias for aria-[128|192|256]-cbc
365 aria-[128|192|256]-cfb 128/192/256 bit ARIA in 128 bit CFB mode
366 aria-[128|192|256]-cfb1 128/192/256 bit ARIA in 1 bit CFB mode
367 aria-[128|192|256]-cfb8 128/192/256 bit ARIA in 8 bit CFB mode
368 aria-[128|192|256]-ctr 128/192/256 bit ARIA in CTR mode
369 aria-[128|192|256]-ecb 128/192/256 bit ARIA in ECB mode
370 aria-[128|192|256]-ofb 128/192/256 bit ARIA in OFB mode
371
3fd5ece3
P
372 camellia-[128|192|256]-cbc 128/192/256 bit Camellia in CBC mode
373 camellia[128|192|256] Alias for camellia-[128|192|256]-cbc
374 camellia-[128|192|256]-cfb 128/192/256 bit Camellia in 128 bit CFB mode
375 camellia-[128|192|256]-cfb1 128/192/256 bit Camellia in 1 bit CFB mode
376 camellia-[128|192|256]-cfb8 128/192/256 bit Camellia in 8 bit CFB mode
377 camellia-[128|192|256]-ctr 128/192/256 bit Camellia in CTR mode
378 camellia-[128|192|256]-ecb 128/192/256 bit Camellia in ECB mode
379 camellia-[128|192|256]-ofb 128/192/256 bit Camellia in OFB mode
380
a0e9f529
DSH
381=head1 EXAMPLES
382
4abc5c62
DSH
383Just base64 encode a binary file:
384
385 openssl base64 -in file.bin -out file.b64
386
387Decode the same file
388
1bc74519 389 openssl base64 -d -in file.b64 -out file.bin
4abc5c62 390
eadde90b
AS
391Encrypt a file using AES-128 using a prompted password
392and PBKDF2 key derivation:
4abc5c62 393
eadde90b 394 openssl enc -aes128 -pbkdf2 -in file.txt -out file.aes128
4abc5c62
DSH
395
396Decrypt a file using a supplied password:
397
eadde90b
AS
398 openssl enc -aes128 -pbkdf2 -d -in file.aes128 -out file.txt \
399 -pass pass:<password>
4abc5c62
DSH
400
401Encrypt a file then base64 encode it (so it can be sent via mail for example)
eadde90b 402using AES-256 in CTR mode and PBKDF2 key derivation:
4abc5c62 403
eadde90b 404 openssl enc -aes-256-ctr -pbkdf2 -a -in file.txt -out file.aes256
4abc5c62 405
eadde90b 406Base64 decode a file then decrypt it using a password supplied in a file:
4abc5c62 407
eadde90b
AS
408 openssl enc -aes-256-ctr -pbkdf2 -d -a -in file.aes256 -out file.txt \
409 -pass file:<passfile>
a0e9f529
DSH
410
411=head1 BUGS
412
413The B<-A> option when used with large files doesn't work properly.
414
f2e5ca84
DSH
415The B<enc> program only supports a fixed number of algorithms with
416certain parameters. So if, for example, you want to use RC2 with a
41776 bit key or RC4 with an 84 bit key you can't use this program.
a0e9f529 418
9e8b6f04
RS
419=head1 HISTORY
420
fc5ecadd 421The default digest was changed from MD5 to SHA256 in OpenSSL 1.1.0.
9e8b6f04 422
e2f92610
RS
423=head1 COPYRIGHT
424
b6b66573 425Copyright 2000-2019 The OpenSSL Project Authors. All Rights Reserved.
e2f92610 426
449040b4 427Licensed under the Apache License 2.0 (the "License"). You may not use
e2f92610
RS
428this file except in compliance with the License. You can obtain a copy
429in the file LICENSE in the source distribution or at
430L<https://www.openssl.org/source/license.html>.
431
432=cut