openssl簡介-指令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
本文出自 51CTO.COM技術博客
posted on 2009-11-27 17:37
零全零美 閱讀(1289)
評論(0) 編輯 收藏 所屬分類:
安全相關