对于很多涉密的文件,很多人一直想找一个好的加密软件进行加密,其实,系统自带的openssl就有加密功能,只是大家不怎么注意罢了。

openssl加密方式大致如下

openssl enc -S HEX -in file -out file

其中enc为编码加密的方式,具体来说,有如下几种:

es-128-cbc aes-128-ecb aes-192-cbc aes-192-ecb
aes-256-cbc aes-256-ecb base64 bf
bf-cbc bf-cfb bf-ecb bf-ofb
camellia-128-cbc camellia-128-ecb camellia-192-cbc camellia-192-ecb
camellia-256-cbc camellia-256-ecb cast cast-cbc
cast5-cbc cast5-cfb cast5-ecb cast5-ofb
des des-cbc des-cfb des-ecb
des-ede des-ede-cbc des-ede-cfb des-ede-ofb
des-ede3 des-ede3-cbc des-ede3-cfb des-ede3-ofb
des-ofb des3 desx idea
idea-cbc idea-cfb idea-ecb idea-ofb
rc2 rc2-40-cbc rc2-64-cbc rc2-cbc
rc2-cfb rc2-ecb rc2-ofb rc4
rc4-40 seed seed-cbc seed-cfb
seed-ecb seed-ofb

我们只要选择一个我们常用的加密方法就可以了,比如aes-256-cbc,des3等等。

-S为加盐的16进制数值,我们加盐的时候,随便选择一个16进制数值就行,例如5646cdba等等,或者图省事,直接用-salt参数就行,或者现在的openssl都是默认加盐的,其实不加-salt也没事。

这样,以使用des3加密文件aaa为例,默认输出文件bbb,可以这样:

openssl des3 -salt -in aaa -out bbb

系统会要求你输入两遍密码进行加密,如果你怕输入密码。可以直接加上-k参数:

openssl des3 -salt -k yourpassword -in aaa -out bbb

解密文件也很简单,直接加一个-d的参数,把-in和-out反过来即可,比如上面的加密文件bbb,我们解密出来变成ccc,可以这样:

openssl des3 -d -salt -k yourpassword -in bbb -out ccc

比较下aaa和ccc,你会发现文件是一样的,也就是说完美还原了回来。

大部分时候,文件备份都会用到tar命令,openssl可以通过管道和tar结合起来用。

比如打包加密整个目录:

tar -cf - directory | openssl aes-128-cbc -salt -out directory.tar.aes

解密此文件:

openssl aes-128-cbc -d -salt -in directory.tar.aes | tar -xf -

上下tar后面第二个“-”表示bash中的标准输出和标准输入。如果要解包到特定的目录,可以在后面继续加一个-C newdirtory的命令。

打包的时候,如果要用gzip压缩,只需要在tar后面加参数z即可,这个相比大家都知道,就不赘述了。

网上还有种方法,没有用openssl标准的in out输入输出文件,而是用dd命令,我感觉有点多此一举,具体用法如下:

tar -czvf - directory | openssl des3 -salt -k yourpassword | dd of=directory.tar.gz.des3

解密文件

dd if=directory.tar.gz.des3 | openssl des3 -d -k yourpassword | tar xzf -

我感觉这样完全没必要,如果有什么特殊的优点,可以告知我。

 

下面的内容引用自http://www.ha97.com/5114.html 仅供参考

二、OpenSSL加密指令语法:

SYNOPSIS
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e]
[-d] [-a] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-p]
[-P] [-bufsize number] [-nopad] [-debug]
说明:
-chipername选项:加密算法,Openssl支持的算法在上面已经列出了,你只需选择其中一种算法即可实现文件加密功能。
-in选项:输入文件,对于加密来说,输入的应该是明文文件;对于解密来说,输入的应该是加密的文件。该选项后面直接跟文件名。
-out选项:输出文件,对于加密来说,输出的应该是加密后的文件名;对于解密来说,输出的应该是明文文件名。
-pass选项:选择输入口令的方式,输入源可以是标准输入设备,命令行输入,文件、变量等。
-e选项:实现加密功能(不使用-d选项的话默认是加密选项)。
-d选项:实现解密功能。
-a和-A选项:对文件进行BASE64编解码操作。
-K选项:手动输入加密密钥(不使用该选项,Openssl会使用口令自动提取加密密钥)。
-IV选项:输入初始变量(不使用该选项,Openssl会使用口令自动提取初始变量)。
-salt选项:是否使用盐值,默认是使用的。
-p选项:打印出加密算法使用的加密密钥。

三、用法举例:

1、使用aes-128-cbc算法加密文件:
openssl enc -aes-128-cbc -in install.log -out enc.log
(注:这里install.log是你想要加密的文件,enc.log是加密后的文件,回车后系统会提示你输入密码。)
2、解密刚才加密的文件:
openssl enc -d -aes-128-cbc -in enc.log -out install.log
(注:enc.log是刚才加密的文件,install.log是解密后的文件,-d选项实现解密功能。)
3、加密文件后使用BASE64格式进行编码:
openssl enc -aes-128-cbc -in install.log -out enc.log -a
4、使用多种口令输入方式加密:
openssl enc -des-ede3-cbc -in install.log -out enc.log -pass pass:111111
(这种方法的好处是你可以把它写入到脚本中,自动完成加密功能,不使用pass选项默认系统会提示输入密码并且确认,是需要人工操作的。)

采用openssl和tar加密解密文件
Tagged on:

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注