網路資料加密需要解決三個問題:
完整:資料不被篡改;
安全:資料不被截獲,或者截獲也無法得到明文;
可靠:資料從真正的傳送方而來,其他人無法偽造乙個資料來欺騙接受方;
下面例子只解決了安全這個問題:
非對稱演算法使用的兩個金鑰有如下關係:使用公共金鑰加密的資訊只能被相應的私有金鑰解密。因此,我首要求你給我傳送你的公共金鑰。在傳送給我的途中可能有人會擷取它,但是沒有關係,因為他們只能使用該金鑰給你的資訊加密。我使用你的公共金鑰加密文件並傳送給你。你使用私有金鑰解密該文件,這是唯一可以解密的金鑰,並且沒有通過網路傳遞。
示例是乙個tcp程式,分為伺服器端和客戶端。伺服器端的工作流程是:
從客戶端接收公共金鑰。
使用公共金鑰加密未來使用的對稱金鑰。
將加密了的對稱金鑰傳送給客戶端。
給客戶端傳送使用該對稱金鑰加密的資訊。
**如下:
namespace
com.billdawson.crypto
catch
//建立監聽
try"
,port);
client
=listener.accepttcpclient();
console.writeline(
"connection.");
}catch
(exception e)
trycatch
(exception e)
finally
catch
console.writeline(
"server exiting");
}}private
static
rsaparameters getclientpublickey(tcpclient client)
ms.position=0
; result
=(rsaparameters)bf.deserialize(ms);
ms.close();
return
result;
}private
static
void
encryptandsendsymmetrickey(
tcpclient client,
rsacryptoserviceprovider rsa,
symmetricalgorithm symm)
private
static
void
encryptandsendsecretmessage(tcpclient client,
symmetricalgorithm symm,
string
secretmsg) }
客戶端的工作流程是:
建立和傳送公共金鑰給伺服器。
從伺服器接收被加密的對稱金鑰。
解密該對稱金鑰並將它作為私有的不對稱金鑰。
接收並使用不對稱金鑰解密資訊。
**如下:
namespace
com.billdawson.crypto
trycatch
try//
連線catch
(exception e)
trycatch
(exception e)
finally
catch}}
private
static
void
sendpublickey(
rsaparameters key,
tcpclient client)
private
static
memorystream getrestofmessage(tcpclient client)
ms.position =0
;return
ms;}
private
static
void
extractsymmetrickeyinfo(
rsacryptoserviceprovider rsa,
symmetricalgorithm symm,
memorystream msorig)
private
static
void
showsecretmessage(
symmetricalgorithm symm,
memorystream msorig) }
}
網路資料安全資訊加密
資訊在傳輸過程中容易丟失或受損,而有效的資料傳輸應該首先保證資料的完整性,通常在資料加密問題上,vpn 裝置具有實現資料完整性傳輸的功能。通過對資訊的鑑別能夠反應出其資訊的真實性和有效性,資料加密採用了一種數學函式的力一式,即 hash 資料在解密的時候通過 hash 一 裝置加密 裝置是企業級的儲...
簡單網路傳遞加密資料
網路傳遞加密資料 雖然不對稱加密解決了用對稱加密傳遞訊息必須傳遞金鑰的問題,但是由於不對稱加密無法使用流進行處理,因此與對稱加密相比效率較低,不適用於加密大量資料的場合。在實際應用中,一般將兩種加密方法配合使用。其基本思想是 用不對稱加密演算法加密對稱加密演算法的金鑰,用對稱加密演算法加密實際資料。...
網路請求加密
1.token 已登陸使用者的識別碼 解決的問題 使用者呼叫介面時,不用每次都帶上使用者名稱和密碼,避免了頻繁在網路中傳輸密碼被截獲的風險。使用場景 使用者登入系統時傳入使用者名稱和密碼,伺服器校驗成功之後,根據uuid等引數生成token返回給客戶端,同時把該token和該使用者的對應關係快取在伺...