您的位置:新葡亰496net > 电脑系统 > 对称加密,OpenSSL之对称加密算法命令详解

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

发布时间:2019-09-17 09:19编辑:电脑系统浏览(181)

    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值,单向加密后新调换的密码已经相比较安全(称之为密钥比较好),能够看作对称加密时的裁长补短密钥。另外,由于同一单向加密算法对同一明文密码的总括结果是完全一致的,那样解密时使用同样的单向加密算法就能够总结出完全一样的密钥,也正是解密时的对称密钥。假如想要更安全,还是能够在对称加密后对加密文件进行双重编码,如应用"base64"、二进制或hex编码格局展开编码,但相应的在解密前就要求先解码,解码后技艺解密。

    因而,将对称加、解密的体制轻便总结如下:

    对称加密建制:根据内定的单向加密算法,对输入的精晓密码实行单向加密(暗中认可是md5),获得固定长度的加密密钥,即对称密钥,再依附钦点的博采众长加密算法,使用对称密钥加密文件,最后再一次编码加密后的公文。即单向加密公然密码结果作为对称密钥、使用对称密钥加密文件、对文件再度编码。

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

    之所以,解密进度中使用的解码模式、单向加密和对称加密算法都不可能分化,且输入的密码必需是不易密码。但必要小心的一些是,解密时方可不点名salt,因为加密时行使的salt会记录下来,解密时得以读取该salt。

    如下图所示,分别是加密和平解决密进度暗中表示图。

    新葡亰496net 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",只不过因为尚未点名输入密码选项,使用的加密密码为空而已,且单向加密算法使用的也是私下认可值。解密时也一致。

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

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

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

    [[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.1。

    [[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
    

    (3).加密时带上点盐salt。其实不写时暗许就早就插足了,只可是是踏向随机盐值。使用-S能够钦命分明要利用的盐的值。可是盐的值只好是16进制范围内字符的咬合,即"0-9a-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
    

    (4).在测量试验下"-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
    

    看得出,解密时,只要内定和加密时一致编码格式和单向加密算法,密钥的结果便是一律的,且解密时明显钦赐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之对称加密算法命令详解

    1、对称加密算法概述

    openssl的加密算法库提供了增加的相反相成加密算法,大家得以经过openssl提供的群策群力加密算法指令的法子选用,也足以由此调用openssl提供的API的办法采纳。

    openssl的集合思路和意见加密算法指令主要用来对数据开展加密息争密管理,openssl基本上为全数其援助的相辅相成加密算法都提供了命令的法子的应用,这么些应用指令的名字基本上都以以对称加密算法本身的名字加上位数、加密情势恐怕别的属性组合而成。举个例子DES算法的CBC形式,其对应的吩咐正是des-cbc。能够经过命令查看当前版本的openssl支持的相反相成加密算法,举个例子Ubunt14.04 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为大家提供的对称加密算法指令纵然功能强大,但并不完全,比方对称加密算法不帮助柒十几人的RC2加解密也许捌九位的RC4加解密灯成效。倘若想灵活的运用这么些加密算法和方式,就需求学习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)
    -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]

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

    [-k/-kfile]

    格外在此之前版本,钦赐密码输入格局,现已被pass参数代替

    [md]

    内定密钥生成的摘要算法,顾客输入的口令不能一直作为文件加密的密钥,而是经过摘要算法做转变,此参数钦赐摘要算法,暗许md5

    [-S]

    为了抓牢安全性��在把客户密码调换到加密密钥的时候必要使用盐值,暗许盐值随机变化。使用该参数,则盐值由客商钦点。也可指用-nosalt内定不利用盐值,但下落了安全性,不引入应用。

    [K/IV]

    默许文件的加密密钥的Key和IV值是有顾客输入的密码通过转化生成的,但也足以由客商自己钦点Key/IV值,此时pass参数不起成效

    [pP]

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

    [bufsize]

    读写文件的I/O缓存,一般无需钦定

    [-nopad]

    不应用补齐,那就要求输入的数额长度是选拔加密算法的分组大小的翻番

    [engine]

    钦命三方加密设备,未有条件,暂不实验

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

    1、只对文本举办base64编码,而不使用加解密

    /*对文本举办base64编码*/
    openssl enc -base64 -in plain.txt -out base64.txt
    /*对base64格式文件举行解密操作*/
    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
    /*情形变量输入,密码123456*/
    passwd=123456
    对称加密,OpenSSL之对称加密算法命令详解。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
    新葡亰496net,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值也是稳固的。

    4、加解密后经过使用base64编解码

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

     5、手动钦定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值是16进制*/
    [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 的下载地址:请点这里

    本文长久更新链接地址:

    1、对称加密算法概述 openssl的加密算法库提供了增进的对称加密算法,我们得以经过openssl提供的相得益彰加密算...

    1、对称加密算法概述


    转发请注脚出处:

    enc(对称加密),opensslenc加密 对称加密工具。掌握对称加密的规律后就很容易了,原理部分见下文。 openssl enc -ciphername [-in filename] [-...

    openssl的加密算法库提供了增进的对称加密算法,大家得以因而openssl提供的相反相成加密算法指令的措施使用,也得以经过调用openssl提供的API的艺术利用。

    对称加密工具。明白对称加密的原理后就相当粗略了,原理部分见下文。

    openssl的相得益彰加密算法指令重要用来对数据开展加密和平解决密管理,openssl基本上为全体其帮助的对称加密算法都提供了指令的方法的接纳,那么些应用指令的名字基本上都以以对称加密算法本人的名字加上位数、加密情势或然其余属性组合而成。例如DES算法的CBC格局,其对应的授命正是des-cbc。能够由此命令查看当前版本的openssl补助的对称加密算法,举个例子Ubunt14.04 openssl版本及帮衬对称加密算法指令如下:

    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:传递加、解密时的当众密码。若验证具名时实用的公钥或私钥文件是被加密过的,则供给传递密码来解密。密码的格式见" style="color: #0000ff;">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部分的,见后文深入分析。

    linuxidc@linuxidc:~$ 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提供了三种方法调用对称加密算法:

    -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
    

    一种就是一贯调用对称加密命令,举例:

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

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

    -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
    

    除此以外一种是接纳enc的办法,即用对称加密命令作为enc指令的参数,比如:.

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

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

    对称加解密时,它们采纳的密码是完全同样的,举个例子"123456",但那是密码,且是公然密码,非常不安全,所以理应对此轻巧密码举办复杂化。最直白的不二等秘书技是选用单向加密计算出明文密码的hash值,单向加密后新变化的密码已经比较安全(称之为密钥相比较好),能够看做对称加密时的相辅相成密钥。别的,由于一样单向加密算法对一样明文密码的总括结果是完全一致的,那样解密时采纳同一的单向加密算法就会估计出完全同样的密钥,也正是解密时的裁长补短密钥。假如想要更安全,还足以在对称加密后对加密文书实行再一次编码,如使用"base64"、二进制或hex编码格局开展编码,但对应的在解密前就需求先解码,解码后本事解密。

    上述两条指令完成的功能是千篇一律的,何况其参数也是均等。原本enc是功能是什么啊?简单的话,为了便利……。

    所以,将对称加、解密的体制轻松归纳如下:

    openssl提供了N多的博采众长加密算法指令,enc正是把那几个N多的对称的加密算法指令统一集成到enc指令中。当用户使用时,只需利用enc,钦赐加密算法,就是完成单独的加密算法指令实现的操作。并且,enc中得以钦赐的相反相成加密算法指令恐怕并不曾以独立指令的款型存在。全部小编提议利用enc这种方法。

    对称加密机制:依照钦点的单向加密算法,对输入的公然密码进行单向加密(暗中同意是md5),获得稳定长度的加密密钥,即对称密钥,再依赖钦命的相反相成加密算法,使用对称密钥加密文件,最终再一次编码加密后的文书。即单向加密公然密码结果作为对称密钥、使用对称密钥加密文件、对文件再次编码。

    理当如此,就算openssl为大家提供的群策群力加密算法指令即使功用强大,但并不完整,举例对称加密算法不协助柒拾五人的RC2加解密可能八十个人的RC4加解密灯成效。借使想灵活的采取那么些加密算法和形式,就需求学习openssl提供的API

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

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

    所以,解密进度中利用的解码格局、单向加密和对称加密算法都不能够不一律,且输入的密码必得是不利密码。但须求注意的少数是,解密时方可不钦定salt,因为加密时行使的salt会记录下来,解密时能够读取该salt。

    可以经过enc的man手册查看enc的详实用法,也得以透过enc -help的法子查看首要参数概要表明,如下

    一般来讲图所示,分别是加密和平解决密进度暗中提示图。

    linuxidc@linuxidc:~$ 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)
    -bufsize <n>  buffer size
    -nopad        disable standard block padding
    -engine e      use engine e, possibly a hardware device.
    Cipher Types
    ...

    新葡亰496net 2新葡亰496net 3

    [in/out]

    示例:

    那多个参数钦定输入文件和输出文件,加密是输入文件是当面,输出文件是密文;解密时输入文件是密文,输出文件是真心诚意。

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

    [pass]

    (1).首先测量检验openssl enc的编码功用。由于未钦点密码选项"-k"或"-pass",所以只有只举办编码而不进行加密,因而也不会唤起输入密码。

    钦定密码的输入格局,共有各样艺术:命令行输入(stdin)、文件输入(file)、情状变量输入(var)、文件汇报符输入(fd)、标准输入(stdin)。暗中认可是标准输入,及从键盘输入。

    [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
    

    [e/d]

    再以base64格式进行解码。

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

    [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
    

    [-a/-base64]

    实在,上述编码和平解决码的进度严刻地说也是对称加密和平解决密,因为openssl enc私下认可会带上加密选项"-e",只但是因为尚未点名输入密码选项,使用的加密密码为空而已,且单向加密算法使用的也是默许值。解密时也一律。

    是因为文件加密后是二进制方式,不便利查看,使用该参数能够使加密后的内容通过base64编码,使其可读;同样,解密时供给进步行base64解编码,然后开展解密操作。

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

    [-k/-kfile]

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

    相称从前版本,钦定密码输入格局,现已被pass参数替代

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

    [md]

    [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==
    

    内定密钥生成的摘要算法,客商输入的口令不可能直接当做文件加密的密钥,而是经过摘要算法做转变,此参数钦赐摘要算法,暗许md5

    解密文件test.1。

    [-S]

    [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
    

    为了进步安全性,在把客户密码转变到加密密钥的时候必要采用盐值,私下认可盐值随机变化。使用该参数,则盐值由顾客钦定。也可指用-nosalt钦定不应用盐值,但下落了安全性,不推荐使用。

    (3).加密时带上点盐salt。其实不写时暗中认可就早就参与了,只不过是到场随机盐值。使用-S能够钦定明显要动用的盐的值。不过盐的值只好是16进制范围内字符的三结合,即"0-9a-fA-F"的随机八个或两个结合。

    [K/IV]

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

    暗中同意文件的加密密钥的Key和IV值是有客户输入的密码通过转化生成的,但也能够由客户自身钦点Key/IV值,此时pass参数不起成效

    解密。解密时不要钦定salt值,尽管钦赐了也不会影响解密结果。      

    [pP]

    [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参数会打字与印刷文件密钥Key和IV值,加上P参数也会打字与印刷文件密钥Key和IV值,但不开展真正的加解密操作

    (4).在测验下"-p"和"-P"选项的输出效能。小写字母p不独有输出密钥算法结果,还输出加解密的源委,而大写字母P则只输出密钥算法结果。

    [bufsize]

    加密时的气象。

    读写文件的I/O缓存,一般无需内定

    [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
    

    [-nopad]

    其间key便是单向加密公开密码后获取的相得益彰密钥,iv是密码运算时行使的向量值。

    不应用补齐,那就需求输入的数量长度是应用加密算法的分组大小的倍数

    再看解密时的气象,此处加上了salt。

    [engine]

    [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,结果如下。

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

    [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、只对文本进行base64编码,而不采用加解密

    足见,解密时,只要钦定和加密时同样编码格式和单向加密算法,密钥的结果就是均等的,且解密时鲜明钦命salt是空洞的,因为它能够读取到加密时使用的salt。

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

    竟然,解密时钦命分裂的相反相成加密算法,密钥结果也是同样的。

    2、区别措施的密码输入情势

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

    /*命令行输入,密码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
    /*情况变量输入,密码123456*/
    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值加密

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

    能够见见,不采取-S参数,salt参数随机生成,key和iv值也声犹在耳变动,当slat值固定时,key和iv值也是牢固的。

    4、加解密后过程使用base64编解码

    /*使用-a参数加密后使用base64编码*/
    linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in plain.txt -a -out encrypt.txt -pass pass:123456
    /*利用-a参数解密前应用base64解码*/
    linuxidc@linuxidc:~$ openssl enc -aes-128-cbc -in encrypt.txt -d -a -out plain1.txt -pass pass:123456
    /*文件一律*/
    linuxidc@linuxidc:~$ diff plain.txt plain1.txt
    /*加密后文件使用了base64编码*/
    linuxidc@linuxidc:~$ cat encrypt.txt
    U2FsdGVkX19KbCj9GMI1TBOQjP8JJcefIUH1tHwf/Z4=

     5、手动内定Key和IV值

    /*手动钦命key和iv值,salt固定*/
    linuxidc@linuxidc:~$ 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值是16进制*/
    linuxidc@linuxidc:~$ 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 及证件  http://www.linuxidc.com/Linux/2015-10/124682.htm

    Ubuntu安装OpenSSL  http://www.linuxidc.com/Linux/2015-10/124001.htm

    透过OpenSSL提供FTP SSL/TLS认证功效,并落实武威数据传输 http://www.linuxidc.com/Linux/2013-05/84986.htm

    Linux下利用OpenSSL生成证书 http://www.linuxidc.com/Linux/2015-05/117034.htm

    选取OpenSSL签定多域名证书 http://www.linuxidc.com/Linux/2014-10/108222.htm

    在OpenSSL中增加自定义加密算法  http://www.linuxidc.com/Linux/2015-08/121749.htm

    OpenSSL 的事无巨细介绍:请点这里
    OpenSSL 的下载地址
    :请点这里

    本文永世更新链接地址:http://www.linuxidc.com/Linux/2016-03/129562.htm

    新葡亰496net 4

    本文由新葡亰496net发布于电脑系统,转载请注明出处:对称加密,OpenSSL之对称加密算法命令详解

    关键词:

上一篇:linux vim编辑

下一篇:没有了