使用RSA實現客戶端和後台的非對稱加密

2022-03-25 10:58:08 字數 1335 閱讀 8202

公鑰

加密演算法

是2023年由

羅納德·李維斯特

(ron rivest)、

阿迪·薩莫爾

(adi shamir)和

倫納德·阿德曼

(leonard adleman)一起提出的。當時他們三人都在麻省理工學院工作。rsa就是他們三人姓氏開頭字母拼在一起組成的。

rsa是目前最有影響力的

公鑰加密演算法

,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被

iso推薦為公鑰

資料加密標準

。今天只有短的rsa鑰匙才可能被強力方式解破。到2023年為止,世界上還沒有任何可靠的攻擊rsa演算法的方式。只要其鑰匙的長度足夠長,用rsa加密的資訊實際上是不能被解破的。但在

分布式計算

和量子計算機

理論日趨成熟的今天,rsa加密安全性受到了挑戰。

rsa演算法基於乙個十分簡單的數論事實:將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。

這裡的客戶端和後台非對稱加密是指,使用者第一次發起頁面請求時,後台(c#)生成一對公鑰和私鑰,客戶端利用js和私鑰對資料進行加密。這裡主要是有乙個js加密演算法和c#加密演算法相容的地方。在客戶端進行加密的主要原因是為了防止網路抓包,加密之後的資料即使被抓包,也是密文而不是明文。

後台**:

protected

string strpublickeyexponent = ""

;

protected

string strpublickeymodulus = ""

;

protected

string decryptpassword = ""

;

protected

void page_load(object

sender, eventargs e)

//把公鑰適當轉換,準備發往客戶端

rsaparameters parameter = rsa.exportparameters(true

); rsaendecode myrsa = new

rsaendecode();

strpublickeyexponent =myrsa.bytestohexstring(parameter.exponent);

strpublickeymodulus =myrsa.bytestohexstring(parameter.modulus);

}

前端**:

這裡只貼出加密方法:

使用tcp select實現客戶端與客戶端的通訊

使用多路復用實現客戶端與客戶端進行通訊 原理 客戶端只要一連上伺服器,立馬給伺服器傳送使用者名稱,然後在服務端將newsocketfd 存放在同乙個結構體中,客戶端先給伺服器傳送資料,然後通過伺服器 給客戶端。伺服器先會查詢對應名字的 newsocketfd 然後向該 newsocketfd 中寫入...

使用swoole實現udp客戶端

udp客戶端 co run function n 關閉已有socket client close 重試 client connect 127.0.0.1 19501 獲取連線狀態,true為已經連線到伺服器,false未連線到伺服器 client isconnected 傳送資料,當為true時表示...

訊息佇列的簡單實現(客戶端A,客戶端B)

下面是兩個相互通訊程序的簡單實現,乙個代表客戶端a,乙個代表客戶端b 客戶端a 傳送typeb型別的資料到客戶端b 讀取傳送到客戶端a的typea型別的資料 include include include include include include include include include...