Linux安全機制之檔案加密解密

來源:互聯網
上載者:User

Linux安全機制之檔案加密解密

【何為加密解密】
    加密:就是把明文轉換成密文的過程,是使用某種特殊的演算法改變原有的資訊資料,使得未授權的使用者即使獲得了已加密的資訊,但因不知解密的方法,仍然無法瞭解資訊的內容。
    解密:就是把密文轉換成明文的過程,授權使用者通過使用與密文加密相對應的演算法轉譯出明文。
【常用密碼演算法和協議】


    對稱式加密:同一個密鑰可以同時用作資訊的加密和解密,這種加密方法稱為對稱式加密;
    常用的對稱式加密演算法:DES (56)、3DES、AES (128,192,256,384,512)、Blowfish、Twofish、IDEA、RC6、CAST5等 ;
    公開金鑰加密:也叫非對稱式加密,是由對應的一對唯一性密鑰(即公開密鑰和私人密鑰)組成的加密方法。
    常用的公開金鑰加密演算法:RSA, DSA, EIGamal等;
    單向加密:是不可解密的加密方法,是非可逆的;
    常用的公開金鑰加密演算法:MD5、SHA1、SHA256、SHA384、SHA512等;
    認證協議:
        IKE協議(英特網金鑰交換協議):常用來確保Virtual Private CloudVPN與遠端網路或者宿主機進行交流時的安全;
        SSL( 安全通訊端層): 網路通訊提供安全及資料完整性的一種安全性通訊協定。
        TLS(傳輸層安全): 是仿照SSL制定,用於在兩個通訊應用程式之間提供保密性和資料完整性。


【加密解密過程】

【openssl命令工具的簡單使用】
    OpenSSL 是一個強大的安全通訊端層密碼庫,囊括主要的密碼演算法、常用的密鑰和認證封裝管理功能及SSL協議,並提供豐富的應用程式供測試或其它目的使用。

    1、查看openssl版本資訊:

openssl version
[root@CentOS6 ~]# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013 #版本資訊,在我們進行打補丁或版本升級時都會先查看下;

    2、對檔案進行對稱式加密:
加密:openssl enc -des3 -a -salt -in /path/from/somefile -out /path/to/somecipherfile
解密:openssl enc -d -des3 -a -salt -in /path/from/somecipherfile -out /path/to/somefile
123456789101112131415161718192021222324252627 root@CentOS6 tmp]# openssl enc -des3 -a -salt -in /tmp/fstab -out /tmp/fstab.sc 
#-des3:為密碼編譯演算法(可以根據自己需要選擇);
#-a:對加密後的資料進行base64編碼,或解密前,先對資料進行base64解碼。
#-salt:加鹽,這是一個神奇的選項,加鹽後,相同的明文可以得到不同的密文。預設情況下,鹽值是隨
#機產生的,可以使用-S選項明確指定鹽值。
#-in:指定要加密的檔案;
#-out:指定加密後輸出的檔案;
enter des-ede3-cbc encryption password: #要求使用者輸入加密密碼;
Verifying - enter des-ede3-cbc encryption password: #密碼確認;
[root@CentOS6 tmp]# cat /tmp/fstab.sc #下面就是產生的密文了,是不是已經無法懂啦~~
U2FsdGVkX188aCeQ1I9XJ4wbVbQtjOUWE3kA7z9qEKwthOgV7hwYoASba6F+24rG
9Icl+4BXyZ1vw+mLcpEaAQotxCpLZB7sYMTpd71jpmUEJkDTYRsP4uLwlFnMPA1G
#----略---
7N9JdTKhByxLwOJaBZxQMFCRoyF8ri2HGE/6tlxuq31RniwOUxcOZ/eux3iXDf2J
xFafl6AbzQgX1OztM+454w==
[root@CentOS6 tmp]# openssl enc -d -des3 -a -salt -in /tmp/fstab.sc -out /tmp/fstab1 #-d:解密;
enter des-ede3-cbc decryption password: #輸入加密使用的密碼,輸入正確就可以解密了;
[root@CentOS6 tmp]# cat fstab1 #解密出來了!!
#
# /etc/fstab
# Created by anaconda on Mon Mar 16 13:43:08 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/vg_centos6-lv_root /                      ext4    defaults        1 1
#--略--

    3、對檔案單向加密:
      openssl dgst [-md5|-sha1] [-out /path/to/filename] /path/from/somefile
[root@CentOS6 tmp]# openssl dgst -md5 /tmp/fstab #使用md5演算法進行單向加密,不用-out指定輸出
#檔案,預設輸出至案頭;
MD5(/tmp/fstab)= 1dc8426edc4278081c898bdf9806682c
[root@CentOS6 tmp]# md5sum  /tmp/fstab  #用md5sum工具給檔案加密;
1dc8426edc4278081c898bdf9806682c  /tmp/fstab
#你可以發現不管你使用什麼工具來單向加密檔案同一檔案,只要演算法一樣其輸出結果都一樣。

    4、對使用者密碼進行hash:
      openssl passwd -1 [-salt SALT]
          -1:表示使用的hash演算法是MD5;
          -salt SALT:輸入作為salt的字串;
[root@CentOS6 tmp]# openssl passwd -1 #使用md5來hash密碼;
Password: #輸入要hash的密碼;
Verifying - Password:  #確認輸入;
$1$mgYuAGde$OHKciTF3gV9YZKMZUPyW./  #hash後的結果;
[root@CentOS6 tmp]# openssl passwd -1 -salt aa
Password: 
$1$aa$9dcbvI.WtNPFK0cdGuO/W0

    5、產生隨機數:

      openssl rand -base64|-hex  num
      -base64|-hex:對隨機字串進行base64編碼或用hex格式顯示;
      num:指定產生指定長度num個bytes的隨機字元;
[root@CentOS6 tmp]# openssl rand -hex 5 #表示隨機產生5bytes的隨機數,並用base64編碼顯示;
c0a6f4c166
[root@CentOS6 tmp]# openssl rand -base64 5 #表示隨機產生5bytes的隨機數,並用hex編碼顯示;
McpaNQI=


    6、產生私密金鑰:
      (umask 077; openssl genrsa  -out /path/to/keyfile NUMBEROFBITS )
      (命令):表示()裡面的命令是在子shell中運行,不影響當前的shell;
        NUMBEROFBITS :密鑰長度(單位bit);
[root@CentOS6 tmp]# (umask 077;openssl genrsa -out /tmp/key 32)
Generating RSA private key, 32 bit long modulus
.+++++++++++++++++++++++++++
.+++++++++++++++++++++++++++
e is 65537 (0x10001)
[root@CentOS6 tmp]# cat /tmp/key  #查看產生的密鑰檔案;
-----BEGIN RSA PRIVATE KEY-----
MCwCAQACBQCyIttNAgMBAAECBGc3UKUCAwDsewIDAMDXAgMAwQ0CAkWhAgI/Og==
-----END RSA PRIVATE KEY-----

    7.提取公開金鑰:
      openssl rsa -in /path/from/private_key_file -pubout -out /path/to/Pub_key_file 
[root@CentOS6 ~]# openssl rsa -in /tmp/key -pubout #不指定輸出到檔案,直接把公開金鑰輸出到螢幕;
writing RSA key
-----BEGIN PUBLIC KEY-----
MCAwDQYJKoZIhvcNAQEBBQADDwAwDAIFALIi200CAwEAAQ==
-----END PUBLIC KEY-----
[root@CentOS6 ~]# man openssl rsa
[root@CentOS6 ~]# openssl rsa -in /tmp/key -pubout -out /tmp/key_pub #提取公開金鑰輸出至檔案;
writing RSA key
[root@CentOS6 ~]# cat /tmp/key_pub
-----BEGIN PUBLIC KEY-----
MCAwDQYJKoZIhvcNAQEBBQADDwAwDAIFALIi200CAwEAAQ==
-----END PUBLIC KEY-----

Linux下使用OpenSSL產生認證 

通過OpenSSL提供FTP+SSL/TLS認證功能,並實現安全資料轉送

利用OpenSSL簽署多網域名稱認證

OpenSSL 的詳細介紹:請點這裡
OpenSSL 的:請點這裡

本文永久更新連結地址:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.