1. 程式人生 > >常見的加密演算法以及加密協議

常見的加密演算法以及加密協議

  • PKI:Public Key Infraastructure

  • CA:Certificate Authority

  • 公鑰加密演算法:

    • DES:Data Encrption Standard;
    • AES:Advanced Encryption Standard;
    • Blowfish:對稱加密演算法;
  • x509:

    • 加解密協議,是應用層,協議,通過在應用層協議和傳輸層之間建立SSL層,資料在SSL層完成加密,也就是說這是一箇中間層,應用層協議都是可以呼叫的;
    • SslV2 SSLV3:這兩個版本是常用的版本;
    • TLS:Transport Layer Security,相當於SSL V3版本;
  • HTTPS:

    • 1.在建立三次握手之後,然後通過協商使用加密協議的某個具體版本;
    • 2.Server將自己證書傳送給客戶端,客戶端驗證證書是否是完整的;
    • 3.Client建立生成會話金鑰,對稱加密密碼,Client生成的大隨機數使用Server的公鑰加密之後傳送給server;
  • 單項加密演算法:

    • MD 4,MD 5,SHA 1,SHA 192 256 384;
    • CRC32:表示迴圈冗餘校驗碼;
  • 公鑰加密經常用於身份認證和祕鑰交換,RSA:用於實現加密和簽名,DSA:用於實現簽名,ElGamal:商業演算法;

  • Openssl:

    • SSL的開源實現,libcrypto:是一個通用功能的加密庫;TLS/SSL
      功能的實現,基於會話實現的身份認證,資料機密性,會話完整性的庫;
    • openssl:多用途的命令列工具,可以用於模擬實現私有證書頒發機構;
    • openssl的配置檔案是/etc/pki/tls/openssl.cnf,這個軟體包包含大量的shell命令;
  • 用於測試加密演算法速度的命令

[[email protected] ~]# openssl speed des

這裡寫圖片描述

  • 加密某個檔案的大致過程
[[email protected] mnt]# cp /etc/inittab .
[[email protected] mnt]# openssl enc -des3 -salt -a -in inittab -out inittab.des3
enter des-ede3-cbc encryption password:   //這裡輸入的祕鑰用於解密
Verifying - enter des-ede3-cbc encryption password:
  • 原始檔

這裡寫圖片描述

  • 加密之後的檔案 這裡寫圖片描述
  • 接下來實現解密這個檔案的過程,前提是必須知道祕鑰
[[email protected] mnt]# openssl enc -des3 -d -salt -a -in inittab.des3 -out ./inittab
enter des-ede3-cbc decryption password:
  • 解密之後的檔案 這裡寫圖片描述

  • 文字特徵碼的計算

  • md5sum

[[email protected] mnt]# md5sum inittab

這裡寫圖片描述

  • sha224sum:
[[email protected] mnt]# sha224sum inittab

這裡寫圖片描述

  • openssl dgst -sha224 inittab 這裡寫圖片描述

  • openssl dgst -md5 inittab 這裡寫圖片描述

  • 生成隨機數

  • openssl rand -base64 12 這裡寫圖片描述

  • Openssl製作私有CA

  • 1.首先生成一對金鑰

[[email protected] CA]# (umask 177;openssl genrsa -out server.key 1024)
Generating RSA private key, 1024 bit long modulus
............................++++++
..........................++++++
e is 65537 (0x10001)
[[email protected] CA]# ll server.key 
-rw-------. 1 root root 887 4月  15 21:22 server.key
  • 2.提取公鑰