十二
指令
enc
用法:
openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e]
[-d] [-a] [-k password] [-kfile filename] [-K key] [-iv IV] [-p]
[-P] [-bufsize number] [-debug]
说明:
对称加密算法工具。它能够把数据用不同对称加密算法来加
/
解密。还能够把加密
/
接密
,
还可以把结果进行
base64
编码。
OPTIONS
-in filename
要加密
/
解密的输入文件,缺省为标准输入。
-out filename
要加密
/
解密的输出文件,缺省为标准输出。
-pass arg
输入文件如果有密码保护,在这里输入密码。
-salt
为了和
openssl0.9.5
以后的版本兼容,必须
set
这个
option.salt
大概又是密码学里的一个术语,具体是做什么的我也没弄的很明白。就
我的理解
,
这是加密过后放在密码最前面的一段字符串
,
用途也是为了让破解更难
.
如果理解错了
,
请密码学高手指正
.
-nosalt
想和
openssl0.9.5
以前的版本兼容,就
set
这个
option
-e
一个缺省会
set
的
option,
把输入数据加密。
-d
解密输入数据。
-a
用
base64
编码处理数据。
set
了这个
option
表示在加密之后的数据还要用
base64
编码捏一次,解密之前则先用
base64
编码解码。
-k password
一个过时了的项,为了和以前版本兼容。现在用
-key
代替了。
-kfile filename
同上,被
passin
代替。
-K key
以
16
进制表示的密码。
-iv IV
作用完全同上。
-p
打印出使用的密码。
-P
作用同上,但打印完之后马上退出。
-bufsize number
设置
I/O
操作的缓冲区大小
-debug
打印调试信息。
注意事项:
0.9.5
以后的版本,使用这个指令,
-salt
是必须被
set
的。否则很容易用字典攻击法破你的密码,流加密算法也容易被破。
(
加密算法中有块加密算法
和流加密算法俩种,块加密算法是一次加密固定长度的数据,一般是
8Bytes,
流加密算法则加密大量数据
)
。为什么我也弄不清楚。研究加密算法实在麻烦,也不是我们程序员的责任本指令可以用不同加密算法,那么哪些好,哪些坏呢?如果
你使用不当,高强度的加密算法也变脆弱了。一般推荐新手门使用
des3-cbc
。
本指令支持的加密算法
base64 Base 64
bf-cbc Blowfish in CBC mode
bf Alias for bf-cbc
bf-cfb Blowfish in CFB mode
bf-ecb Blowfish in ECB mode
bf-ofb Blowfish in OFB mode
cast-cbc CAST in CBC mode
cast Alias for cast-cbc
cast5-cbc CAST5 in CBC mode
cast5-cfb CAST5 in CFB mode
cast5-ecb CAST5 in ECB mode
cast5-ofb CAST5 in OFB mode
des-cbc DES in CBC mode
des Alias for des-cbc
des-cfb DES in CBC mode
des-ofb DES in OFB mode
des-ecb DES in ECB mode
des-ede-cbc Two key triple DES EDE in CBC mode
des-ede Alias for des-ede
des-ede-cfb Two key triple DES EDE in CFB mode
des-ede-ofb Two key triple DES EDE in OFB mode
des-ede3-cbc Three key triple DES EDE in CBC mode
des-ede3 Alias for des-ede3-cbc
des3 Alias for des-ede3-cbc
des-ede3-cfb Three key triple DES EDE CFB mode
des-ede3-ofb Three key triple DES EDE in OFB mode
desx DESX algorithm.
idea-cbc IDEA algorithm in CBC mode
idea same as idea-cbc
idea-cfb IDEA in CFB mode
idea-ecb IDEA in ECB mode
idea-ofb IDEA in OFB mode
rc2-cbc 128 bit RC2 in CBC mode
rc2 Alias for rc2-cbc
rc2-cfb 128 bit RC2 in CBC mode
rc2-ecb 128 bit RC2 in CBC mode
rc2-ofb 128 bit RC2 in CBC mode
rc2-64-cbc 64 bit RC2 in CBC mode
rc2-40-cbc 40 bit RC2 in CBC mode
rc4 128 bit RC4
rc4-64 64 bit RC4
rc4-40 40 bit RC4
rc5-cbc RC5 cipher in CBC mode
rc5 Alias for rc5-cbc
rc5-cfb RC5 cipher in CBC mode
rc5-ecb RC5 cipher in CBC mode
rc5-ofb RC5 cipher in CBC mode
大家可能看到
DES
都分
des-ecb, des-cbc, des-cfb
这些。简单解释一下。
ecb
就是说每来
8bytes,
就加密
8bytes
送出去。各个不同的数据块之间没有任何联系。
cbc
和
cfb
则每次加密一个
8bytes
的时候都和上一个
8bytes
加密的结果有一个运算法则。各个数据块之间是有联系的。
举例时间:
把某二进制文件转换成
base64
编码方式:
openssl base64 -in file.bin -out file.b64
把某
base64
编码文件转换成二进制文件。
openssl base64 -d -in file.b64 -out file.bin
把某文件用
DES-CBC
方式加密。加密过程中会提示你输入保护密码。
openssl des3 -salt -in file.txt -out file.des3
解密该文件,
密码通过
-k
来输入
openssl des3 -d -salt -in file.des3 -out file.txt -k mypassword
加密某文件,并且把加密结果进行
base64
编码。用
bf+cbc
算法加密
openssl bf -a -salt -in file.txt -out file.bf
先用
base64
解码某文件,再解密
openssl bf -d -salt -a -in file.bf -out file.txt