使用openssl實現數據加密



OpenSSL語法格式
git

openssl command [ command_opts ] [ command_args ]
openssl [ list-standard-commands | list-message-digest-commands | list-cipher-commands | list-cipher-algorithms | list-message-digest-algorithms | list-public-key-algorithms]
openssl no-XXX [ arbitrary options ]



1.enc/對稱加密算法


  數據加密bash

enc的選項
enc命令的選項
默認值
備註
-in filename
標準輸入
輸入文件
-out filename
標準輸出
輸出文件
-pass arg

密碼源ide

容許密碼從多個途徑獲取,若是沒有命令沒有獲取到密碼,會從終端索取(不回顯)。加密

-e
默認選項
加密輸入的數據
-d

解密輸入的數據
-salt
默認選項
加密時密文參雜
-S salt

salt應該是一個「十六進制字符串「
-ciphername

加密方法:idea

bf、cast、des、des三、idea、rc二、rc四、rc五、aes
spa


使用des3加密算法
加密數據:
$ openssl enc -des3 -in fstab -out fstab.desc -pass pass:123456 && echo $?
0
$ echo "Hello kitty" | openssl enc -des3 -pass pass:22886068
Salted__N|-O
               {Fv[work@tri ~]$
解密數據:
[view@tri ~]$ cat mimi
Salted__L^vp\p{?[work@tri ~]$ cat mimi | openssl enc -des3 -d -pass pass:22886068
Hello kitty
使用rc4加密算法
[view@tri ~]$ echo "Hello xiaobao" | openssl enc -rc4 -out xiaobao.rc4 -pass pass:238997342
[view@tri ~]$ openssl enc -des3 -d -in xiaobao.rc4 -pass pass:238997342
bad decrypt
140418528815008:error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length:evp_enc.c:597:
?i9Z[work@tri ~]$ openssl enc -rc4 -d -in xiaobao.rc4 -pass pass:238997342
Hello xiaobao
使用cast加密算法
[view@tri ~]$ echo "Hello xiaobao" | openssl enc -cast -out xiaobao.cast -pass pass:238997342
[view@tri ~]$ openssl enc -cast -d -in xiaobao.cast -pass pass:238997342
Hello xiaobao
使用bf加密算法
[view@tri ~]$ echo "Hello xiaobao" | openssl enc -bf -out xiaobao.bf -pass pass:238997342
[view@tri ~]$ openssl enc -bf -d -in xiaobao.bf -pass pass:238997342
Hello xiaobao
使用aes加密算法
[view@tri ~]$ cat xiaobao
hello moyan.
[view@tri ~]$ openssl enc -aes-256-cbc -S "1ae3b897" -in xiaobao -out xiaobao.aes -pass pass:123lkjl3
[view@tri ~]$ openssl enc -aes-256-cbc -d -in xiaobao.aes -pass pass:123lkjl3
hello moyan.



2.哈希密碼調試


2.1.passwd
orm

  密碼加密blog

passwd的選項
passwd命令的選項
默認值
備註
-ciphername
-crypt crypt/1/apr1
-salt
默認(隨機參雜)

-in
默認(標準輸入)

-table

把輸入同步輸出


[view@tri ~]$ openssl passwd -crypt -salt 7/.wkd.p -table 123456
123456    7/.387fViF0wA
[view@tri ~]$ openssl passwd -1 -salt 7/.wkd.p -table 123456
123456    $1$7/.wkd.p$1kZ1FhmTOCnUZSx2nKMpv1
[view@tri ~]$ openssl passwd -apr1 -salt 7/.wkd.p -table 123456
123456    $apr1$7/.wkd.p$E11X7W/a44L/gU9tKOwXx.


2.2.dgst

dgst的選項
dgst命令的選項
默認值
備註
輸出格式
-hex

hex/c/d/binary

十六進制/帶冒號的十六進制/包含調試信息的十六進制/二進制格式

-out
標準輸出
輸出到指定的文件
-sign file


-verify file


-prverify file

-keyform arg

-signature file

簽名驗證
加密格式

-md4/-md5/-ripemd160/-sha/-sha224

-sha256/-sha384/-sha512/-whirlpool


md5
[view@tri ~]$ openssl dgst -md5 -hex doc1 doc2
MD5(doc1)= 66ccbf65cfdd62597d3a7aaabd8a24c7
MD5(doc2)= f08ccb550ba74728534dd467e324bb7c
[view@tri ~]$ md5sum doc1 doc2
66ccbf65cfdd62597d3a7aaabd8a24c7  doc1
f08ccb550ba74728534dd467e324bb7c  doc2
sha256
[view@tri ~]$ openssl dgst -sha256 -hex doc1 doc2
SHA256(doc1)= 0520f85b16f1baa6ca41878981bf1848bcce551fc2c7f1e6d2297fc6ed0389ea
SHA256(doc2)= 8851eae4bc339dcfde0a378cc2bd1be0b94e7e126c34e5dd72b8c5728f13fc36



3.對稱密鑰


  

3.1.genpkey/建立私鑰

genpkey的選項
genpkey命令的選項 默認值
備註
-out filename
標準輸出
指定輸出文件名
-outform

指定輸出格式:DER/PEM
-pass arg

加密私鑰的密碼
-cipher

指定加密私鑰的算法
-paramfile file

參數文件
-algorithm alg

DSA/RSA/DH


建立RSA私鑰
[view@tri ~]$ openssl genpkey -algorithm RSA
生成DSA密鑰參數
[view@tri ~]$ openssl genpkey -genparam -algorithm DSA -out dsap.pem
生成DSA私鑰
[view@tri ~]$ openssl genpkey -paramfile dsap.pem -out dsakey.pem


3.2.pkey/管理私鑰

pkey的選項
pkey命令的選項
默認值
備註
-inform
PEM
DER/PEM
-outform
PEM
DER/PEM
-in filename

標準輸入
-out filename

標準輸出
-passin arg

原密碼
-passout arg

新密碼
-cipher

加密算法
-pubout
私鑰
輸出公鑰


私鑰加密
[view@tri ~]$ openssl pkey -in dsakey.pem -des3 -out dsakey.des3
轉換私鑰格式爲DER
[view@tri ~]$ openssl pkey -in dsakey.pem -outform DER -out dsakey.der
輸出公鑰
[view@tri ~]$ openssl pkey -in dsakey.pem -pubout
[view@tri ~]$ openssl pkey -in dsakey.des3 -pubout
Enter pass phrase for dsakey.des3:
[view@tri ~]$ openssl pkey -inform DER -in dsakey.der -pubout



3.3.RSA/DSA/密鑰管理


RSA/DSA公共選項
默認值
備註
-in filename 標準輸入

-passin arg
密碼源
-out filename 標準輸出
-passout arg
密碼源
加密選項

-des  -des3  -idea
-text


-noout


-modulus


-pubin

指定讀取爲「公鑰"
-pubout

指定輸出爲「公鑰」
-engine id



3.3.1.RSA

RSA選項
RSA公共選項 默認值
備註
-inform PEM|NET|DER PEM
密鑰格式
-outform PEM|NET|DER PEM

-sgckey

-check


3.3.2.DSA

DSA選項
DSA公共選項 默認值
備註
-inform PEM|DER PEM
密鑰格式
-outform PEM|DER PEM


刪除密碼
[view@tri ~]$ openssl rsa -in key.pem -out keyout.pem
增長密碼
[view@tri ~]$ openssl rsa -in key.pem -des -out keyout.pem
格式轉換
[view@tri ~]$ openssl dsa -in key.pem -outform DER -out keyout.der
查看私鑰信息
[view@tri ~]$ openssl rsa -in key.pem -text -noout
輸出公鑰
[view@tri ~]$ openssl rsa -in key.pem -pubout -out pubkey.pem




wKiom1drGPrjzc-kAABm6P93Pb8198.jpg

相關文章
相關標籤/搜索