Openssl 之 對稱加密、單向加密筆記

一、介紹

    enc - 對稱加密例程,使用對稱密鑰對數據進行加解密,特點是速度快,能對大量數據進行處理。算法有流算法和分組加密算法,流算法是逐字節加密,數據經典算法,但由於其容易被破譯,現在已很少使用;分組加密算法是將數據分成固定大小的組裏,然後逐組進行加密,比較廣爲人知的是DES3。分組算法中又有ECB,CBC,CFB,OFB,CTR等工作模式,其中默認選CBC工作模式。


二、語法格式

           openssl enc -ciphername [-in filename] [-out filename] [-pass arg] [-e] [-d]
       [-a/-base64] [-A] [-k password] [-kfile filename] [-K key] [-iv IV] [-S salt]
       [-salt] [-nosalt] [-z] [-md] [-p] [-P] [-bufsize number] [-nopad] [-debug] [-none]
       [-engine id]


三、選項說明

    -in filename
      要加密/解密的輸入文件,缺省爲標準輸入。
    -out filename
      要加密/解密的輸出文件,缺省爲標準輸出。
    -pass arg
      輸入文件如果有密碼保護,在這裏輸入密碼。

-pass 提供了幾種傳入密碼的方式。傳統是利用-k 選項傳入密碼的。

-pass pass:"123"      #密碼是123  
-pass pass:123        #密碼是123  
-pass evn:VAR         #密碼從環境變量VAR中去  
-pass file:p.txt      #密碼從文件p.txt第一行取,不包括換行符,注意DOS格式的^M及回車符。  
-pass fd:3            #密碼從文件描述符3中讀  
-pass stdin           #標準輸入

    -salt
     加鹽,這是開啓的默認選項,使用-nosalt已明確關閉此選項,除非爲了兼容性的考慮,否則在新程序中請使用此選項。這是一個神奇的選項,加鹽後,相同的明文可以得到不同的密文。默認情況下,鹽值是隨機生成的,可以使用-S選項明確指定鹽值。   

    有了鹽值後,相同的明文可以產生不同的密文並在密文中包含了鹽值

    -nosalt
      和salt對應不加鹽 
    -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
       打印調試信息。

更多參數信息請參考:# openssl enc --help



例:使用openssl對/etc/fstab進行加密

  加密前:

[root@1inux ssl]# cat fstab 

#
# /etc/fstab
# Created by anaconda on Thu Mar 26 20:01:38 2015
#
# 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
#
/dev/mapper/vg0-root    /                       ext4    defaults        1 1
UUID=0d0698ff-1645-4ff8-af27-fc6e73573941 /boot                   ext4    defaults        1 2
/dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2
/dev/mapper/vg0-var     /var                    ext4    defaults        1 2
/dev/mapper/vg0-swap    swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

    加密:

[root@1inux ssl]# openssl enc -e -des3 -pass pass:1 -a -salt -in fstab -out fstab.des3

    加密後文件

[root@1inux ssl]# cat fstab.des3 
U2FsdGVkX1/XypmPFRgpK3Gr+nZeWqIUS0IRDEDOFOOj3ZKbhlOmpcNQf7t37xSa
P6pho1z+u3AZc9H3bgp6savgny7X0ud3SjcQL5nd1/Tk+h9GEVH52B5Btg8gwDpM
W9XDFQk+eAL4ZYxYuZVdyxu6ppQ6UEjxLV4LiXcfGAoGu7XDgrcpG0vEojYfWoNS
xy8jkXOY7LW4dLi2wdlWBh3H9dcaJDmx96RhvFkrHEFOR2dMdRplEoh9BCX75MuC
j2I73zNjku7Ig8WDABfZXLWqiQoA9107AsiXCgfQ2KRLFzWFB6wFFaaN/HF3Raht
WtQNI13IYUuDIzg8xtJq+g3om3TKwFsX8EX75LrrKLPrgH3PENvycyzqEHbRwfE4
EOg8PHSqnV4NCkOH58vhazMlG/79h2XW29K0+t2WN5EdJevTSB/59i3D3QMQEuUs
1pPz9xKDg6csDy+qTVJCz2B+44cEi3eOC2k5f8T06WiDw6kvMkl7YfpkjJ0CXviT
cDcOLWIn+sOMoKnZBoFIoLVk2cF6rs5S0d6gj22FBydRNMVfAA/0o6pR1cX99lbC
mhVem2pCD2oC0ZG8yFI7iUFc94ctWCzaiR4eGWSrT7TLNkzuiNxpPSqM+O8l5rYc
hb7GXTjCS+s5NVIkZy6Wi27HmfZOJw0DuPFvgvBlcWRzlu4KwNF+RRdZ7gWY4s12
n/ymOUNEEcesrrCnADwjcLmdtMzzgF9s09IRLH6S5gmlM1oYjD+J8neRKBE53xKS
+YyWJkW/LW36BNkoXG7Wq+W/fHNOGmPbHBoGgqCT7tguycfuLWCqNYOtq6zJlUCj
70Ip6MQ55nGi3JoD4HLl865u0thPbuuIMrbxdvcSmkL11LpQSKiHl4zANAeEkDe8
tEmVSbisYWMTmKnxrJAoSp6L5+jApiBXtLJsxd5/6BtsVFk5qokpiuLW0evs0Y5q
Jrf2bCuKXDdCLVWHkjFX7QnHNP5XEkEy5Wfa6nnru2C5mvWhtE2703YkjvDD7LPF
kvIj2mIG+/vi9AIcU3Foi1wA2gDYW+8y/IV5t5/oFuEcFqdSVZaOc4HEsEIBy3+B
oJfDFkmXo5o3EfGFKetYlh6Db7TGd4fuP3iydHNnw92q1QWWZuETK1iL6SHXppRr
pg71NwIWzASIvg+XEVIA/4KBbED9htIjZu1Did209pVjIrS0eIJqyqoB4pZHjUsj
yLfeG34SpKHDWvCPHLF/pITmQHeDFMFeyBfFtWZGEsQ=
[root@1inux ssl]#

    解密:

[root@1inux ssl]# openssl enc -d -des3 -pass pass:1 -a -salt -in fstab.des3 -out fstab.new

    解密後

[root@1inux ssl]# cat fstab.new 

#
# /etc/fstab
# Created by anaconda on Thu Mar 26 20:01:38 2015
#
# 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
#
/dev/mapper/vg0-root    /                       ext4    defaults        1 1
UUID=0d0698ff-1645-4ff8-af27-fc6e73573941 /boot                   ext4    defaults        1 2
/dev/mapper/vg0-usr     /usr                    ext4    defaults        1 2
/dev/mapper/vg0-var     /var                    ext4    defaults        1 2
/dev/mapper/vg0-swap    swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
[root@1inux ssl]#


**********筆記***********************************************

對稱加密:加密和解密使用同一個密鑰
        依賴於:算法和密鑰
            安全性依賴於密鑰,而非算法
        常見算法:
            DES:Data Encryption standard,56bits (IBM研究員研發出來的)【使用56位祕鑰】
            3DES:重新設計的另一種算法 不同於DES
            AES:Advanced Encrpytion Standard 【祕鑰有多重變化 128bits,192,256,512】
            (AES 可變化的 可自動選擇長度) 【目前常用】
            Blowfish:
            Twofish:
            IDEA:商業
            RC6
            CAST5
        特性:
            1、加密、解密使用同一密鑰
            2、將明文分割成固定大小的塊,逐個進行加密;
        缺陷:
            1、密鑰過多:
            2、密鑰分發


********************************************************

》》》》》》》》》》擴展 :單向加密《《《《《《《《《《《《《《《

單向加密:

    主要用途:提取數據特徵碼

       特性:
         1、定長輸出:無論原來的數據是多大級別,其加密結果長度一樣;
         2、雪崩效應:原始數據微小改變,將會導致結果巨大變化;
           3、不可逆:

        算法:md5, sha1
            工具:openssl dgst, md5sum, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum

            # openssl dgst -CIPHER /PATH/TO/SOMEFILE...

[root@1inux CA]# openssl dgst -sha256 index.txt
SHA256(index.txt)= 5a894d470ade08ff3379a5e8f4817fef115ee83f6bb854f59e2b50b1b317679f
[root@1inux CA]# sha256sum index.txt
5a894d470ade08ff3379a5e8f4817fef115ee83f6bb854f59e2b50b1b317679f  index.txt
[root@1inux CA]#

            MAC: 消息認證碼,單向加密的一種延伸應用,用於實現在網絡通信中保證所傳輸的數據的完整性;
                機制:
                    CBC-MAC
                    HMAC:使用md5或sha1算法

        生成用戶密碼:
            # openssl passwd -1 -salt 8bits隨機數

[root@1inux CA]# openssl passwd -1 -salt 12345678
Password: 
$1$12345678$XM4P3PrKBgKNnTaqG9P0T/
[root@1inux CA]#


        生成隨機數:
            # openssl rand -hex|-base64 NUM

[root@1inux CA]# openssl rand -hex 8
187b52f635ba0a03
[root@1inux CA]# openssl rand -hex 8
71585682fc67c452
[root@1inux CA]# openssl rand -base64 8
YHlapjLwL9I=
[root@1inux CA]# openssl rand -base64 8
MHG5PifRDLg=
[root@1inux CA]#




參考文獻:http://blog.csdn.net/ligaoyang/article/details/6865711

          http://www.cnblogs.com/AloneSword/p/3481126.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章