1. 程式人生 > >[svc]openssl對稱加密,非對稱加密最佳實戰

[svc]openssl對稱加密,非對稱加密最佳實戰

 OpenSSL進行aes加密解密-對稱加密

  • 建立檔案test.txt, 特意寫入中英文
# cd /tmp
# echo "test測試" > test.txt
  • 開始加密, 使用aes-128-cbc演算法, 也可以使用其他演算法, 通過檢視openssl的幫助可獲知
# openssl aes-128-cbc -salt -in test.txt -out test.txt.aes
enter aes-128-cbc encryption password:<輸入密碼>
Verifying - enter aes-128-cbc encryption password:<確認密碼
>
  • 檢視加密前後的檔案大小, 加密後文件明顯增大了
# ll test.txt*  
-rw-r--r--  1 root root  9 Aug 11 15:42 test.txt
-rw-r--r--  1 root root 32 Aug 11 15:43 test.txt.aes

–檢視加密前後的檔案內容, 加密後文件無法直接檢視, 顯示亂碼

# cat test.txt
test測試

# cat test.txt.aes
Salted__碾RTqm6棚顱
  • 現在開始解密, 會提示輸入密碼, 如果密碼有誤則無法解密
# openssl aes-128-cbc
-d -salt -in test.txt.aes -out test.txt.out enter aes-128-cbc decryption password:<輸入錯誤密碼> bad decrypt 6150:error:06065064:digital envelope routines:EVP_DecryptFinal:bad decrypt:evp_enc.c:438: # openssl aes-128-cbc -d -salt -in test.txt.aes -out test.txt.out enter aes-128-cbc decryption password
:<輸入正確密碼>
  • 檢視解密前後的檔案大小, 和加密前是一樣的
# ll test.txt*
-rw-r--r--  1 root root  9 Aug 11 15:42 test.txt
-rw-r--r--  1 root root 32 Aug 11 15:43 test.txt.aes
-rw-r--r--  1 root root  9 Aug 11 15:45 test.txt.out
  • 檢視解密前後的檔案內容, 和加密前是一樣的
# cat test.txt.out
test測試

這種方法非常適合Linux下的檔案內容保密, 呵呵….以上命令加引數比較複雜, 我們可以把命令加引數做個函式, 然後放到.bash_profile裡, 這樣每次登陸後直接使用函式即可, 如下:

function encryption() 
{ 
    /usr/bin/openssl aes-128-cbc -salt -in $1 -out $1.aes && rm -f $1
}
function decryption() 
{ 
    /usr/bin/openssl aes-128-cbc -d -salt -in $1.aes -out $1 && rm -f $1.aes
}

然後就可以如下使用了(注意輸入引數都是原檔名, 且會自動刪除原檔案):

# encryption test.txt
enter aes-128-cbc encryption password:
Verifying - enter aes-128-cbc encryption password:

# decryption test.txt
enter aes-128-cbc decryption password:
# ll test.txt*  
-rw-r--r--  1 root root 9 Aug 11 15:46 test.txt
-rw-r--r--  1 root root 9 Aug 11 15:45 test.txt.out

--End--

 OpenSSL進行RSA加密解密-非對稱加密

RSA是一個非對稱加密演算法。簡單地說,非對稱加密演算法就是說加密解密一個檔案需要兩個金鑰,一個用來加密,為公鑰,一個用來解密,為私鑰。證書可以用來授權公鑰的使用。
介紹下Linux平臺下openssl工具的簡單使用:
- 1、生成一個金鑰:

openssl  genrsa  -out  test.key  1024

這裡-out指定生成檔案。需要注意的是這個檔案包含了公鑰和私鑰兩部分,也就是說這個檔案既可用來加密也可用來解密。後面的1024是生成金鑰的長度。
- 2、openssl可以將這個檔案中的公鑰提取出來:

openssl  rsa  -in  test.key  -putout  -out  test_pub.key

-in指定輸入檔案,-out指定提取生成公鑰的檔名。至此,我們手上就有了一個公鑰,一個私鑰(包含公鑰)。現在可以用公鑰來加密檔案了。

  • 3、在目錄中建立一個hello的文字檔案,然後利用此前生成的公鑰加密檔案:
openssl  rsautl  -encrypt  -in  hello  -inkey  test_pub.key  -pubin  -out  hello.en

-in指定要加密的檔案,-inkey指定金鑰,-pubin表明是用純公鑰檔案加密,-out為加密後的檔案。

  • 4、解密檔案:
openssl rsautl -decrypt -in hello.en -inkey test.key -out hello.de

-in指定被加密的檔案,-inkey指定私鑰檔案,-out為解密後的檔案。

OpenSSl命令列工具驗證數字簽名:

一、傳送方A:

生成私鑰:

OpenSSL> genrsa -passout pass:123456 -out apri.pem 1024

生成公鑰:

OpenSSL> rsa -passin pass:123456 -pubout -in apri.pem -out apub.pem

用B的公鑰加密資料:

OpenSSL> rsautl -encrypt -pubin -inkey bpub.pem -in data.txt -out edata.txt

計算資料的訊息摘要:

OpenSSL> dgst -sha1 -out md.txt data.txt

用A的私鑰給訊息摘要簽名:

OpenSSL> rsautl -sign -inkey apri.pem -in md.txt -out signature.bin
將edata.txt和signature.bin傳送給接收方B

二、接收方B

生成私鑰:

OpenSSL> genrsa -passout pass:654321 -out bpri.pem 1024

生成公鑰:

OpenSSL> rsa -passin pass:654321 -pubout -in bpri.pem -out bpub.pem

用B的私鑰解密資料:

OpenSSL> rsautl -decrypt -inkey bpri.pem -in edata.txt -out data.txt

計算data.txt的資訊摘要:

OpenSSL> dgst -sha1 -out ms2.txt data.txt

用A的公鑰解密數字簽名:

OpenSSL> rsautl -verify -pubin -inkey apub.pem -in signature.bin -out ms3.txt

最後比較:ms2.txt 和ms3.txt內容完全相同:

SHA1(data.txt)= ad6910d33d5f96cbd7b9b3378107b8b04ba1c138

相關推薦

[svc]openssl對稱加密,對稱加密最佳實戰

 OpenSSL進行aes加密解密-對稱加密 建立檔案test.txt, 特意寫入中英文 # cd /tmp # echo "test測試" > test.txt 開始加密, 使用aes-128-cbc演算法, 也可以使用其他演算法

[svc]對稱加密/對稱加密細枝末節-如何做到數據傳輸的authentication/data integrity/confidentiality(私密)

ecc 數據完整性 安全 post 數字簽名 .html 模式 數字證書 大量 對稱/非對稱/混合加密的冷知識 數據在互聯網上傳輸,要考慮安全性. 講到安全,要從三方面考慮: 1、authentication 每一個IP包的認證,確保合法源的數據 2、data integ

php使用openssl來實現對稱加密

使用非對稱加密主要是藉助openssl的公鑰和私鑰,用公鑰加密私鑰解密,或者私鑰加密公鑰解密。 1.安裝openssl和php的openssl擴充套件 2.生成私鑰:openssl genrsa 用於生成rsa私鑰檔案,生成是可以指定私鑰長度和密碼保護 openssl g

對稱對稱加密

針對加密方式劃分為 對稱加密和非對稱加密 對稱加密:使用唯一祕鑰對資料進行加解密,其主要特點為速度快、使用方便、適合對大資料量進行加解密操作;主要缺點也比較明顯,需要事先約定祕鑰,當雙方通訊時就涉及到該祕鑰的交換,存在被截獲風險。 Aes演算法:將資料劃分為區塊,每個區塊

什麼是非對稱加密?對稱加密概念

什麼是非對稱加密 對稱加密演算法在加密和解密時使用的是同一個祕鑰;而非對稱加密演算法需要兩個金鑰來進行加密和解密,這兩個祕鑰是公開金鑰(public key,簡稱公鑰)和私有金鑰(private key,簡稱私鑰)   與對稱加密演算法不同,非對稱加密演算法需要兩個金鑰:

Git基本命令-遠端 以及 對稱對稱加密區別

git 基本命令 引擎 程式碼在本地提交,可以實現版本回退和前進。但是如果本地磁碟損壞,程式碼丟失,所以 我們要把程式碼往另一臺電腦(遠端伺服器)存一份。好像網盤。實現程式碼在不同客戶端 (電腦、筆記本、手機)拷貝下載程式碼,提交程式碼到遠端伺服器。 ssh 非對稱加密 ss

JAVA實現RSA加密,對稱加密演算法

RSA.java package org.icesnow.jeasywx.util.security; import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair;

對稱加密 對稱加密 不可逆加密演算法

根據金鑰型別不同可以將現代密碼技術分為兩類:對稱加密演算法(私鑰密碼體系)和非對稱加密演算法(公鑰密碼體系)。 1 對稱加密演算法中,資料加密和解密採用的都是同一個金鑰,因而其安全性依賴於所持有金鑰的安全性。 對稱加密演算法的主要優點是加密和解密速度快,加密強度高,且演算法公開. 缺點是實現金鑰的祕密分發困

Java對稱對稱加密解密,AES與RSA

加密技術可以分為對稱與非對稱兩種. 對稱加密,解密,即加密與解密用的是同一把祕鑰,常用的對稱加密技術有DES,AES等 而非對稱技術,加密與解密用的是不同的祕鑰,常用的非對稱加密技術有RSA等 為什麼要有非對稱加密,解密技術呢 假設這樣一種場景A要傳送一段訊息給B,但是又

理論:HTTPS,TLS,SSL,TCP,UDP,對稱加密,對稱加密

HTTP:傳輸web內容的協議,軟水管(公開透明) TLS/SSL:不鏽鋼管 HTTPS:HTTP套上SSL,軟水管套上不鏽鋼管 TCP:傳輸層協議,HTTP基於TCP,面向連線 UDP:傳輸層協議,先傳不一定先到,面向非連線 對稱加密:加密和解密使用

對稱加密/對稱加密/簽名演算法

對稱加密: 對稱加密是指,加密方和解密方使用同樣的祕鑰來進行加密和解密。 常用對稱加密: 1. DES演算法 DES演算法的入口引數有三個:Key、Data、Mode。其中Key為8個位元組共64位,是DES演算法的工作金鑰;Data也為8個位元組64位,是要被加密或被

資料傳輸加密——對稱加密演算法RSA+對稱演算法AES(適用於java,android和Web)

本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 資料傳輸加密   在開發應用過程中,客戶端與服務端經常需要進行資料傳輸,涉及到重要隱私資訊時,開發者自然會想到對其進行加密,即使傳輸過程中被“有心人”擷取,也不會將資訊洩露。對於加密

Http協議與請求, Post請求與Get請求的區別,Base64和URL編碼,md5,sha-1加密,對稱對稱加密,支付寶微信第三方支付

Http協議與請求 Post請求 Post請求與Get請求的區別 Get請求的引數是直接放在url後面的,而Post請求是放在請求體中的 Get請求引數的長度會根據瀏覽器的不同實現有一定限制,而Post請求引數長度沒有限制

數字摘要,對稱加密,對稱加密,數字簽名,數字證書

數字摘要 數字摘要也稱訊息摘要,由一個單向hash函式對一段訊息進行計算產生,不同的明文生成的密文總是不同的,而同樣的明文的密文一定相同。 訊息摘要能夠驗證訊息的完整性:如果訊息在傳遞的途

軟考之數字簽名 對稱加密 對稱加密

/*如有不對 概不負責*/   首先 對稱加密:是指加密解密使用的金鑰都是一樣的,對稱加密也稱為 私鑰密碼體制。大概在實際生活中就是 你有一個訊息要發給一個人類,你用對稱加密後發給他,然後你們事先肯定得約定好這個金鑰是什麼,然後他就用這個金鑰解開。這個金鑰肯定不能公開,所以

Java進階 八 Java加密技術之對稱加密 對稱加密 不可逆加密算法

歐洲 再次 div 數據安全 識別 交易 standard 計算 領域 對稱加密 非對稱加密 不可逆加密算法 根據密鑰類型不同可以將現代密碼技術分為兩類:對稱加密算法(私鑰密碼體系)和非對稱加密算法(公鑰密碼體系)。 1 對稱加密算法 原理 對稱加密算法中,數據

SpringCloud-分散式配置中心【加密-對稱加密

案例程式碼:https://github.com/q279583842q/springcloud-e-book 非對稱加密 一、什麼是非對稱加密(Asymmetric encryption) 二、Java-keytool 使用說明   非對稱加密我們需要生成對應的公鑰和私鑰,jdk中提供的有java-

對稱對稱加解密

32位 tro 進行 ont 什麽 金融 被鎖 方式 str 對稱 DES: DES算法 再大多運用在 如信用卡持卡人的PIN的加密傳輸,IC卡與POS間的雙向認證、金融交易數據包的MAC校驗等領域 DES算法的入口參數有三

密碼學(對稱對稱密碼 雜湊演算法)

目錄 密碼學 密碼學發展 對稱加密體制 非對稱加密體制 混合加密 雜湊演算法 數字簽名過程 密碼學的應用--網站認證 密碼學 密碼學發展 古典密碼:古代----19世紀末 近代密碼:20世紀初---1949年 現代密碼:1949(夏農

密碼學(對稱對稱密碼)

目錄 密碼學 密碼學發展 雜湊演算法 密碼學 密碼學發展 古典密碼:古代----19世紀末 近代密碼:20世紀初---1949年 現代密碼:1949(夏農發表的《保密系統的加密原理》)---1975 公鑰密碼:1976(W.Diffie和M.Hell