enc.pod 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277
  1. =pod
  2. =head1 NAME
  3. enc - symmetric cipher routines
  4. =head1 SYNOPSIS
  5. B<openssl enc -ciphername>
  6. [B<-in filename>]
  7. [B<-out filename>]
  8. [B<-pass arg>]
  9. [B<-e>]
  10. [B<-d>]
  11. [B<-a>]
  12. [B<-A>]
  13. [B<-k password>]
  14. [B<-kfile filename>]
  15. [B<-K key>]
  16. [B<-iv IV>]
  17. [B<-p>]
  18. [B<-P>]
  19. [B<-bufsize number>]
  20. [B<-nopad>]
  21. [B<-debug>]
  22. =head1 DESCRIPTION
  23. The symmetric cipher commands allow data to be encrypted or decrypted
  24. using various block and stream ciphers using keys based on passwords
  25. or explicitly provided. Base64 encoding or decoding can also be performed
  26. either by itself or in addition to the encryption or decryption.
  27. =head1 OPTIONS
  28. =over 4
  29. =item B<-in filename>
  30. the input filename, standard input by default.
  31. =item B<-out filename>
  32. the output filename, standard output by default.
  33. =item B<-pass arg>
  34. the password source. For more information about the format of B<arg>
  35. see the B<PASS PHRASE ARGUMENTS> section in L<openssl(1)|openssl(1)>.
  36. =item B<-salt>
  37. use a salt in the key derivation routines. This is the default.
  38. =item B<-nosalt>
  39. don't use a salt in the key derivation routines. This option B<SHOULD NOT> be
  40. used except for test purposes or compatibility with ancient versions of OpenSSL
  41. and SSLeay.
  42. =item B<-e>
  43. encrypt the input data: this is the default.
  44. =item B<-d>
  45. decrypt the input data.
  46. =item B<-a>
  47. base64 process the data. This means that if encryption is taking place
  48. the data is base64 encoded after encryption. If decryption is set then
  49. the input data is base64 decoded before being decrypted.
  50. =item B<-A>
  51. if the B<-a> option is set then base64 process the data on one line.
  52. =item B<-k password>
  53. the password to derive the key from. This is for compatibility with previous
  54. versions of OpenSSL. Superseded by the B<-pass> argument.
  55. =item B<-kfile filename>
  56. read the password to derive the key from the first line of B<filename>.
  57. This is for compatibility with previous versions of OpenSSL. Superseded by
  58. the B<-pass> argument.
  59. =item B<-S salt>
  60. the actual salt to use: this must be represented as a string comprised only
  61. of hex digits.
  62. =item B<-K key>
  63. the actual key to use: this must be represented as a string comprised only
  64. of hex digits. If only the key is specified, the IV must additionally specified
  65. using the B<-iv> option. When both a key and a password are specified, the
  66. key given with the B<-K> option will be used and the IV generated from the
  67. password will be taken. It probably does not make much sense to specify
  68. both key and password.
  69. =item B<-iv IV>
  70. the actual IV to use: this must be represented as a string comprised only
  71. of hex digits. When only the key is specified using the B<-K> option, the
  72. IV must explicitly be defined. When a password is being specified using
  73. one of the other options, the IV is generated from this password.
  74. =item B<-p>
  75. print out the key and IV used.
  76. =item B<-P>
  77. print out the key and IV used then immediately exit: don't do any encryption
  78. or decryption.
  79. =item B<-bufsize number>
  80. set the buffer size for I/O
  81. =item B<-nopad>
  82. disable standard block padding
  83. =item B<-debug>
  84. debug the BIOs used for I/O.
  85. =back
  86. =head1 NOTES
  87. The program can be called either as B<openssl ciphername> or
  88. B<openssl enc -ciphername>.
  89. A password will be prompted for to derive the key and IV if necessary.
  90. The B<-salt> option should B<ALWAYS> be used if the key is being derived
  91. from a password unless you want compatibility with previous versions of
  92. OpenSSL and SSLeay.
  93. Without the B<-salt> option it is possible to perform efficient dictionary
  94. attacks on the password and to attack stream cipher encrypted data. The reason
  95. for this is that without the salt the same password always generates the same
  96. encryption key. When the salt is being used the first eight bytes of the
  97. encrypted data are reserved for the salt: it is generated at random when
  98. encrypting a file and read from the encrypted file when it is decrypted.
  99. Some of the ciphers do not have large keys and others have security
  100. implications if not used correctly. A beginner is advised to just use
  101. a strong block cipher in CBC mode such as bf or des3.
  102. All the block ciphers normally use PKCS#5 padding also known as standard block
  103. padding: this allows a rudimentary integrity or password check to be
  104. performed. However since the chance of random data passing the test is
  105. better than 1 in 256 it isn't a very good test.
  106. If padding is disabled then the input data must be a multiple of the cipher
  107. block length.
  108. All RC2 ciphers have the same key and effective key length.
  109. Blowfish and RC5 algorithms use a 128 bit key.
  110. =head1 SUPPORTED CIPHERS
  111. base64 Base 64
  112. bf-cbc Blowfish in CBC mode
  113. bf Alias for bf-cbc
  114. bf-cfb Blowfish in CFB mode
  115. bf-ecb Blowfish in ECB mode
  116. bf-ofb Blowfish in OFB mode
  117. cast-cbc CAST in CBC mode
  118. cast Alias for cast-cbc
  119. cast5-cbc CAST5 in CBC mode
  120. cast5-cfb CAST5 in CFB mode
  121. cast5-ecb CAST5 in ECB mode
  122. cast5-ofb CAST5 in OFB mode
  123. des-cbc DES in CBC mode
  124. des Alias for des-cbc
  125. des-cfb DES in CBC mode
  126. des-ofb DES in OFB mode
  127. des-ecb DES in ECB mode
  128. des-ede-cbc Two key triple DES EDE in CBC mode
  129. des-ede Two key triple DES EDE in ECB mode
  130. des-ede-cfb Two key triple DES EDE in CFB mode
  131. des-ede-ofb Two key triple DES EDE in OFB mode
  132. des-ede3-cbc Three key triple DES EDE in CBC mode
  133. des-ede3 Three key triple DES EDE in ECB mode
  134. des3 Alias for des-ede3-cbc
  135. des-ede3-cfb Three key triple DES EDE CFB mode
  136. des-ede3-ofb Three key triple DES EDE in OFB mode
  137. desx DESX algorithm.
  138. idea-cbc IDEA algorithm in CBC mode
  139. idea same as idea-cbc
  140. idea-cfb IDEA in CFB mode
  141. idea-ecb IDEA in ECB mode
  142. idea-ofb IDEA in OFB mode
  143. rc2-cbc 128 bit RC2 in CBC mode
  144. rc2 Alias for rc2-cbc
  145. rc2-cfb 128 bit RC2 in CFB mode
  146. rc2-ecb 128 bit RC2 in ECB mode
  147. rc2-ofb 128 bit RC2 in OFB mode
  148. rc2-64-cbc 64 bit RC2 in CBC mode
  149. rc2-40-cbc 40 bit RC2 in CBC mode
  150. rc4 128 bit RC4
  151. rc4-64 64 bit RC4
  152. rc4-40 40 bit RC4
  153. rc5-cbc RC5 cipher in CBC mode
  154. rc5 Alias for rc5-cbc
  155. rc5-cfb RC5 cipher in CFB mode
  156. rc5-ecb RC5 cipher in ECB mode
  157. rc5-ofb RC5 cipher in OFB mode
  158. aes-[128|192|256]-cbc 128/192/256 bit AES in CBC mode
  159. aes-[128|192|256] Alias for aes-[128|192|256]-cbc
  160. aes-[128|192|256]-cfb 128/192/256 bit AES in 128 bit CFB mode
  161. aes-[128|192|256]-cfb1 128/192/256 bit AES in 1 bit CFB mode
  162. aes-[128|192|256]-cfb8 128/192/256 bit AES in 8 bit CFB mode
  163. aes-[128|192|256]-ecb 128/192/256 bit AES in ECB mode
  164. aes-[128|192|256]-ofb 128/192/256 bit AES in OFB mode
  165. =head1 EXAMPLES
  166. Just base64 encode a binary file:
  167. openssl base64 -in file.bin -out file.b64
  168. Decode the same file
  169. openssl base64 -d -in file.b64 -out file.bin
  170. Encrypt a file using triple DES in CBC mode using a prompted password:
  171. openssl des3 -salt -in file.txt -out file.des3
  172. Decrypt a file using a supplied password:
  173. openssl des3 -d -salt -in file.des3 -out file.txt -k mypassword
  174. Encrypt a file then base64 encode it (so it can be sent via mail for example)
  175. using Blowfish in CBC mode:
  176. openssl bf -a -salt -in file.txt -out file.bf
  177. Base64 decode a file then decrypt it:
  178. openssl bf -d -salt -a -in file.bf -out file.txt
  179. Decrypt some data using a supplied 40 bit RC4 key:
  180. openssl rc4-40 -in file.rc4 -out file.txt -K 0102030405
  181. =head1 BUGS
  182. The B<-A> option when used with large files doesn't work properly.
  183. There should be an option to allow an iteration count to be included.
  184. The B<enc> program only supports a fixed number of algorithms with
  185. certain parameters. So if, for example, you want to use RC2 with a
  186. 76 bit key or RC4 with an 84 bit key you can't use this program.
  187. =cut