对称加密,OpenSSL之对称加密算法命令详解

By admin in 美高梅手机版4858 on 2019年4月11日

openssl连串文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html**

对称加密工具。了然对称加密的原理后就很粗大略了,原理部分见下文。

openssl enc(对称加密),opensslenc加密

对称加密工具。了然对称加密的规律后就很不难了,原理部分见下文。

openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d] [-a/-base64] [-k password] [-S salt] [-salt] [-md] [-p/-P]
选项说明:
-ciphername:指定对称加密算法(如des3),可独立于enc直接使用,如openssl des3或openssl enc -des3。推荐在enc后使用,这样不依赖于硬件
-in filename :输入文件,不指定时默认是stdin
-out filename:输出文件,不指定时默认是stdout
-e:对输入文件加密操作,不指定时默认就是该选项
-d:对输入文件解密操作,只有显示指定该选项才是解密
-pass:传递加、解密时的明文密码。若验证签名时实用的公钥或私钥文件是被加密过的,则需要传递密码来解密。密码的格式见"openssl 密码格式"
-k     :已被"-pass"替代,现在还保留是为了兼容老版本的openssl
-base64:在加密后和解密前进行base64编码或解密,不指定时默认是二进制。注意,编码不是加解密的一部分,而是加解密前后对数据的格式"整理"
-a:等价于-base64
-salt:单向加密时使用salt复杂化单向加密的结果,此为默认选项,且使用随机salt值
-S salt:不使用随机salt值,而是自定义salt值,但只能是16进制范围内字符的组合,即"0-9a-fA-F"的任意一个或多个组合
-p:打印加解密时salt值、key值和IV初始化向量值(也是复杂化加密的一种方式),解密时还输出解密结果,见后文示例
-P:和-p选项作用相同,但是打印时直接退出工具,不进行加密或解密操作
-md:指定单向加密算法,默认md5。该算法是拿来加密key部分的,见后文分析。

支撑的单向加密算法有:

-md4            to use the md4 message digest algorithm
-md5            to use the md5 message digest algorithm
-ripemd160      to use the ripemd160 message digest algorithm
-sha            to use the sha message digest algorithm
-sha1           to use the sha1 message digest algorithm
-sha224         to use the sha224 message digest algorithm
-sha256         to use the sha256 message digest algorithm
-sha384         to use the sha384 message digest algorithm
-sha512         to use the sha512 message digest algorithm
-whirlpool      to use the whirlpool message digest algorithm

支撑的对称加密算法有:

-aes-128-cbc               -aes-128-cbc-hmac-sha1     -aes-128-cfb             
-aes-128-cfb1              -aes-128-cfb8              -aes-128-ctr             
-aes-128-ecb               -aes-128-gcm               -aes-128-ofb             
-aes-128-xts               -aes-192-cbc               -aes-192-cfb             
-aes-192-cfb1              -aes-192-cfb8              -aes-192-ctr             
-aes-192-ecb               -aes-192-gcm               -aes-192-ofb             
-aes-256-cbc               -aes-256-cbc-hmac-sha1     -aes-256-cfb             
-aes-256-cfb1              -aes-256-cfb8              -aes-256-ctr             
-aes-256-ecb               -aes-256-gcm               -aes-256-ofb             
-aes-256-xts               -aes128                    -aes192                  
-aes256                    -bf                        -bf-cbc                  
-bf-cfb                    -bf-ecb                    -bf-ofb                  
-blowfish                  -camellia-128-cbc          -camellia-128-cfb        
-camellia-128-cfb1         -camellia-128-cfb8         -camellia-128-ecb        
-camellia-128-ofb          -camellia-192-cbc          -camellia-192-cfb        
-camellia-192-cfb1         -camellia-192-cfb8         -camellia-192-ecb        
-camellia-192-ofb          -camellia-256-cbc          -camellia-256-cfb        
-camellia-256-cfb1         -camellia-256-cfb8         -camellia-256-ecb        
-camellia-256-ofb          -camellia128               -camellia192             
-camellia256               -cast                      -cast-cbc                
-cast5-cbc                 -cast5-cfb                 -cast5-ecb               
-cast5-ofb                 -des                       -des-cbc                 
-des-cfb                   -des-cfb1                  -des-cfb8                
-des-ecb                   -des-ede                   -des-ede-cbc             
-des-ede-cfb               -des-ede-ofb               -des-ede3                
-des-ede3-cbc              -des-ede3-cfb              -des-ede3-cfb1           
-des-ede3-cfb8             -des-ede3-ofb              -des-ofb                
-des3                      -desx                      -desx-cbc                
-id-aes128-GCM             -id-aes128-wrap            -id-aes128-wrap-pad      
-id-aes192-GCM             -id-aes192-wrap            -id-aes192-wrap-pad      
-id-aes256-GCM             -id-aes256-wrap            -id-aes256-wrap-pad      
-id-smime-alg-CMS3DESwrap  -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                  
-rc4-hmac-md5              -seed                      -seed-cbc                
-seed-cfb                  -seed-ecb                  -seed-ofb

在给出openssl enc命令用法示例在此之前,先表达下对称加密和平消除密的规律和进程。

对称加解密时,它们采纳的密码是完全相同的,例如”123456″,但这是密码,且是开诚布公密码,分外不安全,所以应该对此不难密码实行复杂化。最直接的章程是利用单向加密总括出明文密码的hash值,单向加密后新变化的密码已经相比安全(称之为密钥相比好),能够看成对称加密时的对称密钥。其它,由于同样单向加密算法对相同明文密码的测算结果是完全一致的,那样解密时使用同样的单向加密算法就能揣度出完全相同的密钥,也正是解密时的相反相成密钥。如果想要更安全,还足以在对称加密后对加密文书进行重复编码,如利用”base6四”、二进制或hex编码情势实行编码,但对应的在解密前就供给先解码,解码后才能解密。

对称加密,OpenSSL之对称加密算法命令详解。因而,将对称加、解密的编写制定不难总结如下:

对称加密机制:根据钦赐的单向加密算法,对输入的公开密码进行单向加密(私下认可是md伍),获得固定长度的加密密钥,即对称密钥,再依据钦命的相辅相成加密算法,使用对称密钥加密文件,最终再一次编码加密后的文书。即单向加密公开密码结果作为对称密钥、使用对称密钥加密文书、对文件再一次编码。

对称解密机制:先解码文件,再依照单向加密算法对解密时输入的公开密码总括获得对称密钥,依此对称密钥对称解密解码后的文书。

据此,解密进度中行使的解码格局、单向加密和对称加密算法都必须1律,且输入的密码必须是正确密码。但须要专注的某个是,解密时方可不点名salt,因为加密时利用的salt会记录下来,解密时能够读取该salt。

正如图所示,分别是加密和平消除密进度示意图。

美高梅手机版4858 1

示例:

以加密/etc/fstab的备份文件/tmp/test.txt为例。

(1).首先测试openssl
enc的编码功效。由于未钦点密码选项”-k”或”-pass”,所以只是只举行编码而不举办加密,因而也不会唤起输入密码。

[[email protected] tmp]# openssl enc -a -in test.txt -out test_base64.txt

[[email protected] tmp]# cat test_base64.txt
CiMKIyAvZXRjL2ZzdGFiCiMgQ3JlYXRlZCBieSBhbmFjb25kYSBvbiBUaHUgTWF5
IDExIDA0OjE3OjQ0IDIwMTcKIwojIEFjY2Vzc2libGUgZmlsZXN5c3RlbXMsIGJ5
IHJlZmVyZW5jZSwgYXJlIG1haW50YWluZWQgdW5kZXIgJy9kZXYvZGlzaycKIyBT
ZWUgbWFuIHBhZ2VzIGZzdGFiKDUpLCBmaW5kZnMoOCksIG1vdW50KDgpIGFuZC9v
ciBibGtpZCg4KSBmb3IgbW9yZSBpbmZvCiMKVVVJRD1iMmE3MGZhZi1hZWE0LTRk
OGUtOGJlOC1jNzEwOWFjOWM4YjggLyAgICAgICAgICAgICAgICAgICAgICAgeGZz
ICAgICBkZWZhdWx0cyAgICAgICAgMCAwClVVSUQ9MzY3ZDZhNzctMDMzYi00MDM3
LWJiY2ItNDE2NzA1ZWFkMDk1IC9ib290ICAgICAgICAgICAgICAgICAgIHhmcyAg
ICAgZGVmYXVsdHMgICAgICAgIDAgMApVVUlEPWQ1MDUxMTNjLWRhYTYtNGMxNy04
YjAzLWIzNTUxY2VkMjMwNSBzd2FwICAgICAgICAgICAgICAgICAgICBzd2FwICAg
IGRlZmF1bHRzICAgICAgICAwIDAK

再以base64格式举行解码。

[[email protected] tmp]# openssl enc -a -d -in test_base64.txt              

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

事实上,上述编码和解码的进程严俊地说也是对称加密和平化解密,因为openssl
enc私下认可会带上加密选项”-e”,只可是因为从没点名输入密码选项,使用的加密密码为空而已,且单向加密算法使用的也是暗中认可值。解密时也同样。

(二).测试使用des三对称加密算法加密test.txt文件。

[[email protected] tmp]# openssl enc -a -des3 -in test.txt -out test.1 -pass pass:123456 -md md5

加密后,查看加密后文件test.壹的结果。

[[email protected] tmp]# cat test.1
U2FsdGVkX1+c/d4NsXnY6Pd7rcZjGSsMRJWQOP0s5sxH6aLE5iCYjKEAbGac//iR
wkUUh6a57OpUA3+OOCKB4z+IxBcKo67BUDGR9vYeCfkobH9F+mSfVzZbXBrJmxwf
921tJ+8K+yKB6DjJfufpW+DWXmH8MFyvK60wnYHsfUQOp81EvaUtEfqEKIS8hgg7
4NTOyww+/VMDdc2wmkf08XNQUPlVtLaSx3vuBisxRdu8raiKWGGOB7qCwELCxDqu
NaRCIh0VjjffGohAOMMsAQ2kFCDUKx0Z4Df5fvifhPXoHfsj2lI216BPG5Cy88K2
KV78DoBm4pnMAymo/HRRF95LjvWYZIN88hIVN67u2j9zqSGeuyJakMyDVhYYmrHl
sMr2YTbTwus2DiO6qAzt/0a9nocTVKfGR81Xsh0a0ZudjtrMl5H36YJawpldvUCa
DzXPsbpQrp0VGi2HvJ4EVKKEx2uh8XYWmJ4ytj1s1wtCR6wQhmERtInGwULWTyI+
agXStSB5XzsvAJRJvexsaNycj5lAoQ8O6YXEj7B0inB7nBQTFbwkXyvJqXpr1179
i67leYc59OvlhRMA+GLW4g/Mg5dN5SBmgt1ChOJs4887zAUyLYrLvR4zDK6IQN/M
P6F15c9V+m9pw2t32sUQQmYrYqOV/AQf0t0EwvA0Myjmfqtvmp555Q==

解密文件test.一。

[[email protected] tmp]# openssl enc -a -des3 -d -in test.1 -out test.2 -pass pass:123456 -md md5 

[[email protected] tmp]# cat test.2

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

(三).加密时带上点盐salt。其实不写时暗中同意就已经出席了,只然而是投入随机盐值。使用-S能够钦赐分明要动用的盐的值。可是盐的值只好是1陆进制范围内字符的结合,即”0-玖a-fA-F”的随机三个或四个组成。

[[email protected] tmp]# openssl enc -a -des3 -S 'Fabc' -in test.txt -out test.1 -pass pass:123456 -md md5    

解密。解密时绝不钦命salt值,就算钦命了也不会潜移默消除密结果。      

[[email protected] tmp]# openssl enc -a -des3 -d -in test.1 -pass pass:123456 -md md5               

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

[[email protected] tmp]# openssl enc -a -des3 -d -S 'Fabcxdasd' -in test.1 -pass pass:123456 -md md5

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

(四).在测试下”-p”和”-P”选项的输出功能。小写字母p不仅输出密钥算法结果,还输出加解密的始末,而大写字母P则只输出密钥算法结果。

加密时的情事。

[[email protected] tmp]# openssl enc -a -des3 -S 'Fabc' -in test.txt -out test.1 -pass pass:123456 -md md5 -p
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

内部key就是单向加密公然密码后取得的相得益彰密钥,iv是密码运算时使用的向量值。

再看解密时的场馆,此处加上了salt。

[[email protected] tmp]# openssl enc -a -des3 -d -S 'Fabc' -in test.1 -pass pass:123456 -md md5 -P
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

若解密时不点名salt,或许随便钦定salt,结果如下。

[[email protected] tmp]# openssl enc -a -des3 -d -in test.1 -pass pass:123456 -md md5 -P         
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

[[email protected] tmp]# openssl enc -a -des3 -S 'FabM' -d -in test.1 -pass pass:123456 -md md5 -P
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

可知,解密时,只要钦赐和加密时1致编码格式和单向加密算法,密钥的结果正是平等的,且解密时一目理解钦赐salt是空泛的,因为它能够读取到加密时选拔的salt。

竟然,解密时内定不一样的相得益彰加密算法,密钥结果也是同样的。

[[email protected] tmp]# openssl enc -a -desx -d -in test.1 -pass pass:123456 -md md5 -p 
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

因此,能推理出对称加密时利用的相反相成密钥和对称算法是毫无关系的。

 

回到openssl连串文章大纲:

OpenSSL之对称加密算法命令详解

一、对称加密算法概述

openssl的加密算法库提供了丰富的相得益彰加密算法,我们得以通过openssl提供的相反相成加密算法指令的措施利用,也足以经过调用openssl提供的API的不2法门选择。

openssl的相反相成加密算法指令首要用来对数据开始展览加密和解密处理,openssl基本上为全体其扶助的对称加密算法都提供了指令的措施的选拔,那一个使用指令的名字基本上都是以对称加密算法自身的名字加上位数、加密形式也许其他属性组合而成。例如DES算法的CBC方式,其对应的一声令下正是des-cbc。能够通过命令查看当前版本的openssl援助的相反相成加密算法,例如Ubunt14.0四openssl版本及帮助对称加密算法指令如下:

[email protected]:~$
openssl enc -help
unknown option ‘-‘
options are

/**/
Cipher Types
-aes-128-cbc              -aes-128-cbc-hmac-sha1    -aes-128-cfb       
     
-aes-128-cfb1              -aes-128-cfb8              -aes-128-ctr     
       
-aes-128-ecb              -aes-128-gcm              -aes-128-ofb       
     
-aes-128-xts              -aes-192-cbc              -aes-192-cfb       
     
-aes-192-cfb1              -aes-192-cfb8              -aes-192-ctr     
       
-aes-192-ecb              -aes-192-gcm              -aes-192-ofb       
     
-aes-256-cbc              -aes-256-cbc-hmac-sha1    -aes-256-cfb       
     
-aes-256-cfb1              -aes-256-cfb8              -aes-256-ctr     
       
-aes-256-ecb              -aes-256-gcm              -aes-256-ofb       
     
-aes-256-xts              -aes128                    -aes192           
     
-aes256                    -bf                        -bf-cbc           
     
-bf-cfb                    -bf-ecb                    -bf-ofb           
     
-blowfish                  -camellia-128-cbc          -camellia-128-cfb 
     
-camellia-128-cfb1        -camellia-128-cfb8        -camellia-128-ecb   
   
-camellia-128-ofb          -camellia-192-cbc          -camellia-192-cfb 
     
-camellia-192-cfb1        -camellia-192-cfb8        -camellia-192-ecb   
   
-camellia-192-ofb          -camellia-256-cbc          -camellia-256-cfb 
     
-camellia-256-cfb1        -camellia-256-cfb8        -camellia-256-ecb   
   
-camellia-256-ofb          -camellia128              -camellia192       
     
-camellia256              -cast                      -cast-cbc         
     
-cast5-cbc                -cast5-cfb                -cast5-ecb         
     
-cast5-ofb                -des                      -des-cbc           
     
-des-cfb                  -des-cfb1                  -des-cfb8         
     
-des-ecb                  -des-ede                  -des-ede-cbc       
     
-des-ede-cfb              -des-ede-ofb              -des-ede3           
   
-des-ede3-cbc              -des-ede3-cfb              -des-ede3-cfb1   
       
-des-ede3-cfb8            -des-ede3-ofb              -des-ofb           
     
-des3                      -desx                      -desx-cbc         
     
-id-aes128-GCM            -id-aes192-GCM            -id-aes256-GCM     
     
-rc2                      -rc2-40-cbc                -rc2-64-cbc       
     
-rc2-cbc                  -rc2-cfb                  -rc2-ecb           
     
-rc2-ofb                  -rc4                      -rc4-40             
   
-rc4-hmac-md5              -seed                      -seed-cbc         
     
-seed-cfb                  -seed-ecb                  -seed-ofb 

能够见见上述大家履行的是enc
-help命令,enc是何等事物?原来openssl提供了三种方法调用对称加密算法:

壹种正是从来调用对称加密命令,例如:

openssl des-cbc -in plain.txt -out encrypt.txt -pass pass:12345678

其余壹种是应用enc的秘诀,即用对称加密命令作为enc指令的参数,例如:.

openssl enc -des-cbc -in plain.txt -out encrypt.txt -pass pass:12345678

上述两条指令达成的效益是一律的,而且其参数也是①致。原来enc是法力是什么样吧?简单的话,为了便利……。

openssl提供了N多的相得益彰加密算法指令,enc正是把这一个N多的相得益彰的加密算法指令统壹集成到enc指令中。当用户使用时,只需接纳enc,钦赐加密算法,就是完结单独的加密算法指令达成的操作。而且,enc中得以钦命的对称加密算法指令大概并未以单独指令的款式存在。全体小编建议选择enc这种方法。

自然,固然openssl为大家提供的对称加密算法指令固然功效强大,但并不完全,例如对称加密算法不帮忙77人的XC90C二加解密只怕83人的奥迪Q3C4加解密灯功效。即使想灵活的运用这一个加密算法和方式,就须求学习openssl提供的API

2、对称加密算法指令参数

能够通过enc的man手册查看enc的详尽用法,也得以经过enc
-help的格局查正视要参数概要表达,如下

[email protected]:~$
openssl enc -help
unknown option ‘-help’
options are
-in <file>    input file
-out <file>    output file
-pass <arg>    pass phrase source
-e            encrypt
-d            decrypt
-a/-base64    base64 encode/decode, depending on encryption flag
-k            passphrase is the next argument
-kfile        passphrase is the first line of the file argument
-md            the next argument is the md to use to create a key
                from a passphrase.  One of md2, md5, sha or sha1
-S            salt in hex is the next argument
-K/-iv        key/iv in hex is the next argument
-[pP]          print the iv/key (then exit if -P)
美高梅手机版4858,-bufsize <n>  buffer size
-nopad        disable standard block padding
-engine e      use engine e, possibly a hardware device.
Cipher Types

[in/out]

那三个参数钦定输入文件和输出文件,加密是输入文件是公然,输出文件是密文;解密时输入文件是密文,输出文件是通晓。

[pass]

点名密码的输入情势,共有七种办法:命令行输入(stdin)、文件输入(file)、环境变量输入(var)、文件讲述符输入(fd)、标准输入(stdin)。默许是正式输入,及从键盘输入。

[e/d]

e:加密, d:解密  暗许是加密

[-a/-base64]

出于文件加密后是2进制方式,不便于查看,使用该参数能够使加密后的内容通过base6四编码,使其可读;同样,解密时索要先进行base64解编码,然后开展解密操作。

[-k/-kfile]

同盟从前版本,钦定密码输入格局,现已被pass参数取代

[md]

钦命密钥生成的摘要算法,用户输入的口令不能够直接当做文件加密的密钥,而是经过摘要算法做转换,此参数内定摘要算法,暗中同意md伍

[-S]

为了增强安全性��在把用户密码转换到加密密钥的时候必要选用盐值,暗中认可盐值随机变化。使用该参数,则盐值由用户钦定。也可指用-nosalt钦命不应用盐值,但下落了安全性,不推荐使用。

[K/IV]

暗中同意文件的加密密钥的Key和IV值是有用户输入的密码通过转化生成的,但也得以由用户自个儿钦命Key/IV值,此时pass参数不起成效

[pP]

添加p参数会打印文件密钥Key和IV值,加上P参数也会打字与印刷文件密钥Key和IV值,但不开始展览真正的加解密操作

[bufsize]

读写文件的I/O缓存,一般不须要钦定

[-nopad]

不应用补齐,那就必要输入的数码长度是利用加密算法的分组大小的翻番

[engine]

钦点3方加密设备,未有条件,暂不实验

三、对称加密算法使用示例

1、只对文本举行base6四编码,而不使用加解密

/*对文本进行base64编码*/
openssl enc -base64 -in plain.txt -out base64.txt
/*对base6四格式文件举行解密操作*/
openssl enc -base64 -d -in base64.txt -out plain2.txt
/*应用diff命令查看可见解码前后明文壹样*/
diff plain.txt plain2.txt

2、不一样形式的密码输入情势

/*命令行输入,密码123456*/
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass pass:123456
/*文件输入,密码123456*/
echo 123456 > passwd.txt
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass
file:passwd.txt
/*环境变量输入,密码12345陆*/
passwd=123456
export passwd
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass env:passwd
/*从文件描述输入*/
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass fd:1 
/*从行业内部输入输入*/
openssl enc -aes-128-cbc -in plain.txt -out out.txt -pass stdin

3、固定salt值加密

[email protected]:~$
openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt -pass
pass:123456 -P
salt=32F5C360F21FC12D
key=D7E1499A578490DF940D99CAE2E29EB1
iv =78EEB538897CAF045F807A97F3CFF498
[email protected]:~$
openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt -pass
pass:123456 -P
salt=DAA482697BECAB46
key=9FF8A41E4AC011FA84032F14B5B88BAE
iv =202E38A43573F752CCD294EB8A0583E7
[email protected]:~$
openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt -pass
pass:123456 -P -S 123
salt=1230000000000000
key=50E1723DC328D98F133E321FC2908B78
iv =1528E9AD498FF118AB7ECB3025AD0DC6
[email protected]:~$
openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt -pass
pass:123456 -P -S 123
salt=1230000000000000
key=50E1723DC328D98F133E321FC2908B78
iv =1528E9AD498FF118AB7ECB3025AD0DC6
[email protected]:~$

能够看来,不采纳-S参数,salt参数随机生成,key和iv值也不绝于耳变动,当slat值固定时,key和iv值也是稳定的。

四、加解密后进程选择base64编解码

/*采用-a参数加密后使用base6四编码*/
[email protected]:~$
openssl enc -aes-128-cbc -in plain.txt -a -out encrypt.txt -pass
pass:123456
/*应用-a参数解密前使用base6四解码*/
[email protected]:~$
openssl enc -aes-128-cbc -in encrypt.txt -d -a -out plain1.txt -pass
pass:123456
/*文本1律*/
[email protected]:~$
diff plain.txt plain1.txt
/*加密后文件使用了base6四编码*/
[email protected]:~$
cat encrypt.txt
U2FsdGVkX19KbCj9GMI1TBOQjP8JJcefIUH1tHwf/Z4=

 伍、手动内定Key和IV值

/*手动钦赐key和iv值,salt固定*/
[email protected]:~$
openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt  -K 1223 -iv
f123 -p
salt=0B00000000000000
key=12230000000000000000000000000000
iv =F1230000000000000000000000000000
/*钦点pass密码,不起成效,注意Key和IV值是1六进制*/
[email protected]:~$
openssl enc -aes-128-cbc -in plain.txt -out encrypt.txt  -K 1223 -iv
f123 -p -pass pass:123456
salt=F502F4B8DE62E0E5
key=12230000000000000000000000000000
iv =F1230000000000000000000000000000

越多OpenSSL相关内容能够查看以下的有用链接: 

应用 OpenSSL 命令行营造 CA 及证书 

Ubuntu安装OpenSSL 

因而OpenSSL提供FTP+SSL/TLS认证效能,并达成安全体据传输

Linux下选择OpenSSL生成证书

使用OpenSSL签署多域名证书

在OpenSSL中添加自定义加密算法 

OpenSSL 的详尽介绍:请点那里
OpenSSL 的下载地址:请点那里

正文永久更新链接地址:

一、对称加密算法概述
openssl的加密算法库提供了丰裕的相反相成加密算法,我们能够透过openssl提供的相辅相成加密算…


openssl enc -ciphername [-in filename] [-out filename] [-pass
arg] [-e] [-d] [-a/-base64] [-k password] [-S salt]
[-salt] [-md] [-p/-P]

分选表达:

-ciphername:钦赐对称加密算法(如des三),可单独于enc直接利用,如openssl
des三或openssl enc -des叁。推荐在enc后使用,那样不借助于硬件

-in filename :输入文件,不钦命时暗许是stdin

-out filename:输出文件,不点名时私下认可是stdout

-e:对输入文件加密操作,不内定时暗中认可正是该采纳

-d:对输入文件解密操作,唯有显示钦点该选用才是解密

-pass:传递加、解密时的明白密码。若验证签名时实用的公钥或私钥文件是被加密过的,则需求传递密码来解密。密码的格式见” style=”color: #0000ff;”>openssl
密码格式”

-k     :已被”-pass”替代,未来还保存是为着合作老版本的openssl

-base6四:在加密后和平解决密前进行base64编码或解密,不钦命时暗中同意是2进制。注意,编码不是加解密的1有的,而是加解密前后对数据的格式”整理”

-a:等价于-base64

-salt:单向加密时采取salt复杂化单向加密的结果,此为暗中认可选项,且使用随机salt值

-S
salt:不使用随机salt值,而是自定义salt值,但不得不是1陆进制范围内字符的组合,即”0-九a-fA-F”的随机二个或七个结合

-p:打字与印刷加解密时salt值、key值和IV初叶化向量值(也是复杂化加密的1种办法),解密时还输出解密结果,见后文示例

-P:和-p选项成效壹样,不过打字与印刷时一贯退出工具,不举办加密或解密操作

-md:钦点单向加密算法,暗中同意md伍。该算法是拿来加密key部分的,见后文分析。

转发请评释出处:

enc(对称加密),opensslenc加密
对称加密工具。掌握对称加密的法则后就极粗略了,原理部分见下文。 openssl
enc -ciphername [-in filename] [-…

对称加密工具。通晓对称加密的规律后就很简单了,原理部分见下文。

支撑的单向加密算法有:

openssl enc -ciphername [-in filename] [-out filename] [-pass
arg] [-e] [-d] [-a/-base64] [-k password] [-S salt]
[-salt] [-md] [-p/-P]

选取表达:

-ciphername:内定对称加密算法(如des叁),可独立于enc间接使用,如openssl
des3或openssl enc -des三。推荐在enc后采用,那样不借助于于硬件

-in filename :输入文件,不点名时私下认可是stdin

-out filename:输出文件,不点名时暗中同意是stdout

-e:对输入文件加密操作,不点名时默许便是该选取

-d:对输入文件解密操作,唯有呈现钦点该选取才是解密

-pass:传递加、解密时的当众密码。若验证签名时实用的公钥或私钥文件是被加密过的,则必要传递密码来解密。密码的格式见” style=”color: #0000ff;”>openssl
密码格式”

-k     :已被”-pass”替代,今后还保存是为了协作老版本的openssl

-base6四:在加密后和平消除密前开始展览base6四编码或解密,不钦点时暗中认可是②进制。注意,编码不是加解密的一片段,而是加解密前后对数据的格式”整理”

-a:等价于-base64

-salt:单向加密时行使salt复杂化单向加密的结果,此为私下认可选项,且使用随机salt值

-S
salt:不行使随机salt值,而是自定义salt值,但不得不是1陆进制范围内字符的咬合,即”0-九a-fA-F”的妄动七个或多少个结合

-p:打字与印刷加解密时salt值、key值和IV初始化向量值(也是复杂化加密的1种办法),解密时还输出解密结果,见后文示例

-P:和-p选项效用一样,但是打字与印刷时一向退出工具,不举行加密或解密操作

-md:内定单向加密算法,私下认可md伍。该算法是拿来加密key部分的,见后文分析。

-md4            to use the md4 message digest algorithm
-md5            to use the md5 message digest algorithm
-ripemd160      to use the ripemd160 message digest algorithm
-sha            to use the sha message digest algorithm
-sha1           to use the sha1 message digest algorithm
-sha224         to use the sha224 message digest algorithm
-sha256         to use the sha256 message digest algorithm
-sha384         to use the sha384 message digest algorithm
-sha512         to use the sha512 message digest algorithm
-whirlpool      to use the whirlpool message digest algorithm

扶助的单向加密算法有:

支撑的相辅相成加密算法有:

-md4            to use the md4 message digest algorithm
-md5            to use the md5 message digest algorithm
-ripemd160      to use the ripemd160 message digest algorithm
-sha            to use the sha message digest algorithm
-sha1           to use the sha1 message digest algorithm
-sha224         to use the sha224 message digest algorithm
-sha256         to use the sha256 message digest algorithm
-sha384         to use the sha384 message digest algorithm
-sha512         to use the sha512 message digest algorithm
-whirlpool      to use the whirlpool message digest algorithm
-aes-128-cbc               -aes-128-cbc-hmac-sha1     -aes-128-cfb             
-aes-128-cfb1              -aes-128-cfb8              -aes-128-ctr             
-aes-128-ecb               -aes-128-gcm               -aes-128-ofb             
-aes-128-xts               -aes-192-cbc               -aes-192-cfb             
-aes-192-cfb1              -aes-192-cfb8              -aes-192-ctr             
-aes-192-ecb               -aes-192-gcm               -aes-192-ofb             
-aes-256-cbc               -aes-256-cbc-hmac-sha1     -aes-256-cfb             
-aes-256-cfb1              -aes-256-cfb8              -aes-256-ctr             
-aes-256-ecb               -aes-256-gcm               -aes-256-ofb             
-aes-256-xts               -aes128                    -aes192                  
-aes256                    -bf                        -bf-cbc                  
-bf-cfb                    -bf-ecb                    -bf-ofb                  
-blowfish                  -camellia-128-cbc          -camellia-128-cfb        
-camellia-128-cfb1         -camellia-128-cfb8         -camellia-128-ecb        
-camellia-128-ofb          -camellia-192-cbc          -camellia-192-cfb        
-camellia-192-cfb1         -camellia-192-cfb8         -camellia-192-ecb        
-camellia-192-ofb          -camellia-256-cbc          -camellia-256-cfb        
-camellia-256-cfb1         -camellia-256-cfb8         -camellia-256-ecb        
-camellia-256-ofb          -camellia128               -camellia192             
-camellia256               -cast                      -cast-cbc                
-cast5-cbc                 -cast5-cfb                 -cast5-ecb               
-cast5-ofb                 -des                       -des-cbc                 
-des-cfb                   -des-cfb1                  -des-cfb8                
-des-ecb                   -des-ede                   -des-ede-cbc             
-des-ede-cfb               -des-ede-ofb               -des-ede3                
-des-ede3-cbc              -des-ede3-cfb              -des-ede3-cfb1           
-des-ede3-cfb8             -des-ede3-ofb              -des-ofb                
-des3                      -desx                      -desx-cbc                
-id-aes128-GCM             -id-aes128-wrap            -id-aes128-wrap-pad      
-id-aes192-GCM             -id-aes192-wrap            -id-aes192-wrap-pad      
-id-aes256-GCM             -id-aes256-wrap            -id-aes256-wrap-pad      
-id-smime-alg-CMS3DESwrap  -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                  
-rc4-hmac-md5              -seed                      -seed-cbc                
-seed-cfb                  -seed-ecb                  -seed-ofb

支撑的相得益彰加密算法有:

在给出openssl enc命令用法示例从前,先表明下对称加密和平解决密的法则和进度。

-aes-128-cbc               -aes-128-cbc-hmac-sha1     -aes-128-cfb             
-aes-128-cfb1              -aes-128-cfb8              -aes-128-ctr             
-aes-128-ecb               -aes-128-gcm               -aes-128-ofb             
-aes-128-xts               -aes-192-cbc               -aes-192-cfb             
-aes-192-cfb1              -aes-192-cfb8              -aes-192-ctr             
-aes-192-ecb               -aes-192-gcm               -aes-192-ofb             
-aes-256-cbc               -aes-256-cbc-hmac-sha1     -aes-256-cfb             
-aes-256-cfb1              -aes-256-cfb8              -aes-256-ctr             
-aes-256-ecb               -aes-256-gcm               -aes-256-ofb             
-aes-256-xts               -aes128                    -aes192                  
-aes256                    -bf                        -bf-cbc                  
-bf-cfb                    -bf-ecb                    -bf-ofb                  
-blowfish                  -camellia-128-cbc          -camellia-128-cfb        
-camellia-128-cfb1         -camellia-128-cfb8         -camellia-128-ecb        
-camellia-128-ofb          -camellia-192-cbc          -camellia-192-cfb        
-camellia-192-cfb1         -camellia-192-cfb8         -camellia-192-ecb        
-camellia-192-ofb          -camellia-256-cbc          -camellia-256-cfb        
-camellia-256-cfb1         -camellia-256-cfb8         -camellia-256-ecb        
-camellia-256-ofb          -camellia128               -camellia192             
-camellia256               -cast                      -cast-cbc                
-cast5-cbc                 -cast5-cfb                 -cast5-ecb               
-cast5-ofb                 -des                       -des-cbc                 
-des-cfb                   -des-cfb1                  -des-cfb8                
-des-ecb                   -des-ede                   -des-ede-cbc             
-des-ede-cfb               -des-ede-ofb               -des-ede3                
-des-ede3-cbc              -des-ede3-cfb              -des-ede3-cfb1           
-des-ede3-cfb8             -des-ede3-ofb              -des-ofb                
-des3                      -desx                      -desx-cbc                
-id-aes128-GCM             -id-aes128-wrap            -id-aes128-wrap-pad      
-id-aes192-GCM             -id-aes192-wrap            -id-aes192-wrap-pad      
-id-aes256-GCM             -id-aes256-wrap            -id-aes256-wrap-pad      
-id-smime-alg-CMS3DESwrap  -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                  
-rc4-hmac-md5              -seed                      -seed-cbc                
-seed-cfb                  -seed-ecb                  -seed-ofb

对称加解密时,它们采用的密码是完全相同的,例如”12345陆”,但那是密码,且是开诚相见密码,非凡不安全,所以应该对此简单密码进行复杂化。最直白的办法是运用单向加密总计出明文密码的hash值,单向加密后新转变的密码已经相比较安全(称之为密钥比较好),能够看作对称加密时的对称密钥。其它,由于同一单向加密算法对相同明文密码的盘算结果是完全一致的,那样解密时行使同样的单向加密算法就能总结出完全相同的密钥,约等于解密时的相反相成密钥。若是想要更安全,还是能在对称加密后对加密文件实行双重编码,如选取”base64″、二进制或hex编码格局进行编码,但相应的在解密前就需求先解码,解码后才能解密。

在给出openssl enc命令用法示例在此之前,先表达下对称加密和平消除密的原理和经过。

由此,将对称加、解密的机制不难归纳如下:

对称加解密时,它们利用的密码是完全相同的,例如”123456″,但那是密码,且是当面密码,相当不安全,所以理应对此简单密码举办复杂化。最直接的主意是选取单向加密总计出明文密码的hash值,单向加密后新转变的密码已经比较安全(称之为密钥相比好),能够视作对称加密时的相得益彰密钥。其余,由于同样单向加密算法对同样明文密码的盘算结果是完全一致的,那样解密时行使相同的单向加密算法就能猜测出完全相同的密钥,也正是解密时的相辅相成密钥。假诺想要更安全,还可以在对称加密后对加密文书实行重新编码,如运用”base6四”、贰进制或hex编码方式开始展览编码,但对应的在解密前就要求先解码,解码后才能解密。

对称加密机制:依据钦赐的单向加密算法,对输入的公开密码举办单向加密(暗许是md5),获得固定长度的加密密钥,即对称密钥,再依照钦点的对称加密算法,使用对称密钥加密文件,最后再度编码加密后的文件。即单向加密公开密码结果作为对称密钥、使用对称密钥加密文书、对文本再一次编码。

故此,将对称加、解密的建制简单归纳如下:

对称解密机制:先解码文件,再根据单向加密算法对解密时输入的当众密码总结获得对称密钥,依此对称密钥对称解密解码后的文件。

对称加密体制:依据内定的单向加密算法,对输入的领会密码进行单向加密(默许是md伍),获得稳定长度的加密密钥,即对称密钥,再依据钦点的相得益彰加密算法,使用对称密钥加密文书,最后重复编码加密后的文本。即单向加密公然密码结果作为对称密钥、使用对称密钥加密文书、对文本又一次编码。

于是,解密进度中动用的解码格局、单向加密和对称加密算法都不能够不壹律,且输入的密码必须是不利密码。但要求注意的少数是,解密时方可不钦点salt,因为加密时接纳的salt会记录下来,解密时能够读取该salt。

对称解密机制:先解码文件,再依照单向加密算法对解密时输入的公开密码计算获得对称密钥,依此对称密钥对称解密解码后的文书。

一般来说图所示,分别是加密和平消除密进度示意图。

据此,解密进程中运用的解码格局、单向加密和对称加密算法都无法不壹致,且输入的密码必须是天经地义密码。但必要留意的一点是,解密时方可不点名salt,因为加密时选择的salt会记录下来,解密时能够读取该salt。

美高梅手机版4858 2美高梅手机版4858 3

如下图所示,分别是加密和平解决密进程示意图。

示例:

美高梅手机版4858 4美高梅手机版4858 5

以加密/etc/fstab的备份文件/tmp/test.txt为例。

示例:

(一).首先测试openssl
enc的编码成效。由于未钦点密码选项”-k”或”-pass”,所以只是只举办编码而不实行加密,由此也不会提醒输入密码。

以加密/etc/fstab的备份文件/tmp/test.txt为例。

[root@xuexi tmp]# openssl enc -a -in test.txt -out test_base64.txt

[root@xuexi tmp]# cat test_base64.txt
CiMKIyAvZXRjL2ZzdGFiCiMgQ3JlYXRlZCBieSBhbmFjb25kYSBvbiBUaHUgTWF5
IDExIDA0OjE3OjQ0IDIwMTcKIwojIEFjY2Vzc2libGUgZmlsZXN5c3RlbXMsIGJ5
IHJlZmVyZW5jZSwgYXJlIG1haW50YWluZWQgdW5kZXIgJy9kZXYvZGlzaycKIyBT
ZWUgbWFuIHBhZ2VzIGZzdGFiKDUpLCBmaW5kZnMoOCksIG1vdW50KDgpIGFuZC9v
ciBibGtpZCg4KSBmb3IgbW9yZSBpbmZvCiMKVVVJRD1iMmE3MGZhZi1hZWE0LTRk
OGUtOGJlOC1jNzEwOWFjOWM4YjggLyAgICAgICAgICAgICAgICAgICAgICAgeGZz
ICAgICBkZWZhdWx0cyAgICAgICAgMCAwClVVSUQ9MzY3ZDZhNzctMDMzYi00MDM3
LWJiY2ItNDE2NzA1ZWFkMDk1IC9ib290ICAgICAgICAgICAgICAgICAgIHhmcyAg
ICAgZGVmYXVsdHMgICAgICAgIDAgMApVVUlEPWQ1MDUxMTNjLWRhYTYtNGMxNy04
YjAzLWIzNTUxY2VkMjMwNSBzd2FwICAgICAgICAgICAgICAgICAgICBzd2FwICAg
IGRlZmF1bHRzICAgICAgICAwIDAK

(一).首先测试openssl
enc的编码功效。由于未钦定密码选项”-k”或”-pass”,所以只有只进行编码而不开始展览加密,因而也不会唤醒输入密码。

再以base6肆格式举办解码。

[root@xuexi tmp]# openssl enc -a -in test.txt -out test_base64.txt

[root@xuexi tmp]# cat test_base64.txt
CiMKIyAvZXRjL2ZzdGFiCiMgQ3JlYXRlZCBieSBhbmFjb25kYSBvbiBUaHUgTWF5
IDExIDA0OjE3OjQ0IDIwMTcKIwojIEFjY2Vzc2libGUgZmlsZXN5c3RlbXMsIGJ5
IHJlZmVyZW5jZSwgYXJlIG1haW50YWluZWQgdW5kZXIgJy9kZXYvZGlzaycKIyBT
ZWUgbWFuIHBhZ2VzIGZzdGFiKDUpLCBmaW5kZnMoOCksIG1vdW50KDgpIGFuZC9v
ciBibGtpZCg4KSBmb3IgbW9yZSBpbmZvCiMKVVVJRD1iMmE3MGZhZi1hZWE0LTRk
OGUtOGJlOC1jNzEwOWFjOWM4YjggLyAgICAgICAgICAgICAgICAgICAgICAgeGZz
ICAgICBkZWZhdWx0cyAgICAgICAgMCAwClVVSUQ9MzY3ZDZhNzctMDMzYi00MDM3
LWJiY2ItNDE2NzA1ZWFkMDk1IC9ib290ICAgICAgICAgICAgICAgICAgIHhmcyAg
ICAgZGVmYXVsdHMgICAgICAgIDAgMApVVUlEPWQ1MDUxMTNjLWRhYTYtNGMxNy04
YjAzLWIzNTUxY2VkMjMwNSBzd2FwICAgICAgICAgICAgICAgICAgICBzd2FwICAg
IGRlZmF1bHRzICAgICAgICAwIDAK
[root@xuexi tmp]# openssl enc -a -d -in test_base64.txt              

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

再以base6四格式进行解码。

事实上,上述编码和平解决码的历程严刻地说也是对称加密和平解决密,因为openssl
enc暗中认可会带上加密选项”-e”,只不过因为尚未点名输入密码选项,使用的加密密码为空而已,且单向加密算法使用的也是暗中同意值。解密时也同等。

[root@xuexi tmp]# openssl enc -a -d -in test_base64.txt              

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

(贰).测试使用des3对称加密算法加密test.txt文件。

实际上,上述编码和平解决码的进度严厉地说也是对称加密和解密,因为openssl
enc默许会带上加密选项”-e”,只可是因为从没点名输入密码选项,使用的加密密码为空而已,且单向加密算法使用的也是默许值。解密时也一致。

[root@xuexi tmp]# openssl enc -a -des3 -in test.txt -out test.1 -pass pass:123456 -md md5

(二).测试使用des3对称加密算法加密test.txt文件。

加密后,查看加密后文件test.1的结果。

[root@xuexi tmp]# openssl enc -a -des3 -in test.txt -out test.1 -pass pass:123456 -md md5
[root@xuexi tmp]# cat test.1
U2FsdGVkX1+c/d4NsXnY6Pd7rcZjGSsMRJWQOP0s5sxH6aLE5iCYjKEAbGac//iR
wkUUh6a57OpUA3+OOCKB4z+IxBcKo67BUDGR9vYeCfkobH9F+mSfVzZbXBrJmxwf
921tJ+8K+yKB6DjJfufpW+DWXmH8MFyvK60wnYHsfUQOp81EvaUtEfqEKIS8hgg7
4NTOyww+/VMDdc2wmkf08XNQUPlVtLaSx3vuBisxRdu8raiKWGGOB7qCwELCxDqu
NaRCIh0VjjffGohAOMMsAQ2kFCDUKx0Z4Df5fvifhPXoHfsj2lI216BPG5Cy88K2
KV78DoBm4pnMAymo/HRRF95LjvWYZIN88hIVN67u2j9zqSGeuyJakMyDVhYYmrHl
sMr2YTbTwus2DiO6qAzt/0a9nocTVKfGR81Xsh0a0ZudjtrMl5H36YJawpldvUCa
DzXPsbpQrp0VGi2HvJ4EVKKEx2uh8XYWmJ4ytj1s1wtCR6wQhmERtInGwULWTyI+
agXStSB5XzsvAJRJvexsaNycj5lAoQ8O6YXEj7B0inB7nBQTFbwkXyvJqXpr1179
i67leYc59OvlhRMA+GLW4g/Mg5dN5SBmgt1ChOJs4887zAUyLYrLvR4zDK6IQN/M
P6F15c9V+m9pw2t32sUQQmYrYqOV/AQf0t0EwvA0Myjmfqtvmp555Q==

加密后,查看加密后文件test.壹的结果。

解密文件test.1。

[root@xuexi tmp]# cat test.1
U2FsdGVkX1+c/d4NsXnY6Pd7rcZjGSsMRJWQOP0s5sxH6aLE5iCYjKEAbGac//iR
wkUUh6a57OpUA3+OOCKB4z+IxBcKo67BUDGR9vYeCfkobH9F+mSfVzZbXBrJmxwf
921tJ+8K+yKB6DjJfufpW+DWXmH8MFyvK60wnYHsfUQOp81EvaUtEfqEKIS8hgg7
4NTOyww+/VMDdc2wmkf08XNQUPlVtLaSx3vuBisxRdu8raiKWGGOB7qCwELCxDqu
NaRCIh0VjjffGohAOMMsAQ2kFCDUKx0Z4Df5fvifhPXoHfsj2lI216BPG5Cy88K2
KV78DoBm4pnMAymo/HRRF95LjvWYZIN88hIVN67u2j9zqSGeuyJakMyDVhYYmrHl
sMr2YTbTwus2DiO6qAzt/0a9nocTVKfGR81Xsh0a0ZudjtrMl5H36YJawpldvUCa
DzXPsbpQrp0VGi2HvJ4EVKKEx2uh8XYWmJ4ytj1s1wtCR6wQhmERtInGwULWTyI+
agXStSB5XzsvAJRJvexsaNycj5lAoQ8O6YXEj7B0inB7nBQTFbwkXyvJqXpr1179
i67leYc59OvlhRMA+GLW4g/Mg5dN5SBmgt1ChOJs4887zAUyLYrLvR4zDK6IQN/M
P6F15c9V+m9pw2t32sUQQmYrYqOV/AQf0t0EwvA0Myjmfqtvmp555Q==
[root@xuexi tmp]# openssl enc -a -des3 -d -in test.1 -out test.2 -pass pass:123456 -md md5 

[root@xuexi tmp]# cat test.2

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

解密文件test.一。

(3).加密时带上点盐salt。其实不写时私下认可就曾经投入了,只不过是加盟随机盐值。使用-S能够钦命明确要运用的盐的值。可是盐的值只可以是1六进制范围内字符的重组,即”0-9a-fA-F”的轻易3个或多少个组成。

[root@xuexi tmp]# openssl enc -a -des3 -d -in test.1 -out test.2 -pass pass:123456 -md md5 

[root@xuexi tmp]# cat test.2

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0
[root@xuexi tmp]# openssl enc -a -des3 -S 'Fabc' -in test.txt -out test.1 -pass pass:123456 -md md5    

(3).加密时带上点盐salt。其实不写时默许就早已加入了,只可是是加盟随机盐值。使用-S能够钦点明显要利用的盐的值。不过盐的值只能是16进制范围内字符的三结合,即”0-玖a-fA-F”的自由三个或三个组成。

解密。解密时毫不内定salt值,就算钦命了也不会潜移默化解密结果。      

[root@xuexi tmp]# openssl enc -a -des3 -S 'Fabc' -in test.txt -out test.1 -pass pass:123456 -md md5    
[root@xuexi tmp]# openssl enc -a -des3 -d -in test.1 -pass pass:123456 -md md5               

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

[root@xuexi tmp]# openssl enc -a -des3 -d -S 'Fabcxdasd' -in test.1 -pass pass:123456 -md md5

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

解密。解密时绝不钦定salt值,固然钦定了也不会潜移默解决密结果。      

(4).在测试下”-p”和”-P”选项的输出功用。小写字母p不仅输出密钥算法结果,还输出加解密的内容,而大写字母P则只输出密钥算法结果。

[root@xuexi tmp]# openssl enc -a -des3 -d -in test.1 -pass pass:123456 -md md5               

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

[root@xuexi tmp]# openssl enc -a -des3 -d -S 'Fabcxdasd' -in test.1 -pass pass:123456 -md md5

#
# /etc/fstab
# Created by anaconda on Thu May 11 04:17:44 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=b2a70faf-aea4-4d8e-8be8-c7109ac9c8b8 /                       xfs     defaults        0 0
UUID=367d6a77-033b-4037-bbcb-416705ead095 /boot                   xfs     defaults        0 0
UUID=d505113c-daa6-4c17-8b03-b3551ced2305 swap                    swap    defaults        0 0

加密时的气象。

(四).在测试下”-p”和”-P”选项的出口功用。小写字母p不仅输出密钥算法结果,还输出加解密的始末,而大写字母P则只输出密钥算法结果。

[root@xuexi tmp]# openssl enc -a -des3 -S 'Fabc' -in test.txt -out test.1 -pass pass:123456 -md md5 -p
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

加密时的状态。

中间key就是单向加密公开密码后获取的相反相成密钥,iv是密码运算时行使的向量值。

[root@xuexi tmp]# openssl enc -a -des3 -S 'Fabc' -in test.txt -out test.1 -pass pass:123456 -md md5 -p
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

再看解密时的景观,此处加上了salt。

中间key正是单向加密公开密码后收获的相反相成密钥,iv是密码运算时使用的向量值。

[root@xuexi tmp]# openssl enc -a -des3 -d -S 'Fabc' -in test.1 -pass pass:123456 -md md5 -P
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

再看解密时的情形,此处加上了salt。

若解密时不点名salt,只怕随便钦定salt,结果如下。

[root@xuexi tmp]# openssl enc -a -des3 -d -S 'Fabc' -in test.1 -pass pass:123456 -md md5 -P
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499
[root@xuexi tmp]# openssl enc -a -des3 -d -in test.1 -pass pass:123456 -md md5 -P         
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

[root@xuexi tmp]# openssl enc -a -des3 -S 'FabM' -d -in test.1 -pass pass:123456 -md md5 -P
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

若解密时不钦赐salt,或然随便内定salt,结果如下。

足见,解密时,只要内定和加密时同样编码格式和单向加密算法,密钥的结果正是同一的,且解密时肯定内定salt是抽象的,因为它能够读取到加密时采纳的salt。

[root@xuexi tmp]# openssl enc -a -des3 -d -in test.1 -pass pass:123456 -md md5 -P         
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

[root@xuexi tmp]# openssl enc -a -des3 -S 'FabM' -d -in test.1 -pass pass:123456 -md md5 -P
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

依然,解密时内定不一致的相反相成加密算法,密钥结果也是1模壹样的。

足见,解密时,只要钦点和加密时1样编码格式和单向加密算法,密钥的结果正是同壹的,且解密时肯定钦点salt是空虚的,因为它可以读取到加密时接纳的salt。

[root@xuexi tmp]# openssl enc -a -desx -d -in test.1 -pass pass:123456 -md md5 -p 
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

依然,解密时内定差异的相辅相成加密算法,密钥结果也是1模1样的。

透过,能推理出对称加密时利用的对称密钥和对称算法是毫非亲非故系的。

[root@xuexi tmp]# openssl enc -a -desx -d -in test.1 -pass pass:123456 -md md5 -p 
salt=FABC000000000000
key=885FC58E6C822AEFC8032B4B98FA0355F8482BD654739F3D
iv =5128FDED01EE1499

 

透过,能推理出对称加密时使用的相得益彰密钥和对称算法是毫毫无干系系的。

回来openssl连串文章大纲:http://www.cnblogs.com/f-ck-need-u/p/7048359.html

转载请表明出处:http://www.cnblogs.com/f-ck-need-u/p/7111488.html

发表评论

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

网站地图xml地图
Copyright @ 2010-2019 美高梅手机版4858 版权所有