採用單鑰密碼系統的加密方法,同乙個金鑰可以同時用作資訊的加密和解密,這種加密方法稱為對稱加密,也稱為單金鑰加密。
其實很簡單,假設有原始資料"1000", 把1000加5就得到密文"1005",得到密文"1005"後減5就得到原始資料"1000"。把原始資料加5就是加密演算法,把密文減5就是解密演算法,金鑰就是5。
本文所用的是aes這種通用的對稱加密演算法。
(1)curl簡介
在下面的例子中,會使用curl工具,先簡單介紹一下。
curl是利用url語法在命令列方式下工作的開源檔案傳輸工具。
用到的引數:
-x: 指定什麼命令,例如post,get等。
-h: 指定http header。
-d: 制定http body的內容
(2)怎麼保證token在初次返回時的安全
用下面的api返回加密的token
[plain]view plain
copy
curl -x post \
-h "token-param:《時間戳》,"\
-d 『base64encode(aes(token, secretkey))』
注意:token-param是自己定義的http header,這裡是因為個人習慣才命名為token-param
secretkey就是金鑰,使用http header中的token-param中的16位長度。
服務端返回時加密token的方法是用aes加密,金鑰是secretkey。
客戶端解密token的方法是用aes解密,金鑰是secretkey。
(3) api請求中的加密
假設更新使用者資料的api呼叫如下
[plain]view plain
copy
curl -x post \
-h "token-param:《時間戳》,"\
-h 『token:base64encode(aes(token, secretkey))』
-d 『base64encode(aes(date, token))』
secretkey使用http header中的token-param中的16位長度。
在上面的例子中,data是實際要post的資料。
在這個過程中,token和post的資料都得到了加密保護。
客戶端傳送時加密的過程
(1)取http header中的token-param中的16位長度作為金鑰,用aes加密token。
(2)用token作為金鑰,用aes加密data。
服務端接收到這個api請求的解密過程:
(1)取http header中的token-param中的16位長度作為金鑰,用aes解密, 得到token。
(2)用token作為金鑰,用aes解密http body的內容,得到原文。
把token返回的時候,可以做個約定,在返回的時候擷取某個字串的一部分作為金鑰,這個秘鑰只用一次,就是用來解密token的,以後就只是用token來做秘鑰了。
整個過程如下:
SSH如何保證通訊安全
ssh的通訊步驟主要包括建立加密通道 認證和通訊三個階段。分析下來風險主要是在建立加密通道階段,分析和應對總結如下。階段一 協商加密通訊連線。即通過非對稱加密方式先在client和server之間安全的協商對稱金鑰 即會話金鑰 1 雙方協商ssh版本 採用的非對稱加密演算法等資訊 2 server傳...
HTTPS工作原理 如何保證通訊的安全?
https在原有的http協議與tcp協議之間新增了一層,這一層初始使用的是ssl加密,後續逐漸使用tls。首先需要明白https誕生的原因 解決通訊過程中的安全問題,不會被攻擊者獲取通訊中的資訊。為了實現這一目標,我們第一想法是對通訊的內容進行加密。如對稱加密 非對稱加密等。非對稱加密安全性較高,...
如何保證執行緒安全?
執行緒安全 一般說來,確保執行緒安全的方法有這幾個 競爭與原子操作 同步與鎖 可重入 過度優化。競爭與原子操作 多個執行緒同時訪問和修改乙個資料,可能造成很嚴重的後果。出現嚴重後果的原因是很多操作被作業系統編譯為彙編 之後不止一條指令,因此在執行的時候可能執行了一半就被排程系統打斷了而去執行別的 了...