公鑰
加密演算法
是2023年由
羅納德·李維斯特
(ron rivest)、
阿迪·薩莫爾
(adi shamir)和
倫納德·阿德曼
(leonard adleman)一起提出的。當時他們三人都在麻省理工學院工作。rsa就是他們三人姓氏開頭字母拼在一起組成的。
rsa是目前最有影響力的
公鑰加密演算法
,它能夠抵抗到目前為止已知的絕大多數密碼攻擊,已被
iso推薦為公鑰
資料加密標準
。今天只有短的rsa鑰匙才可能被強力方式解破。到2023年為止,世界上還沒有任何可靠的攻擊rsa演算法的方式。只要其鑰匙的長度足夠長,用rsa加密的資訊實際上是不能被解破的。但在
分布式計算
和量子計算機
理論日趨成熟的今天,rsa加密安全性受到了挑戰。
rsa演算法基於乙個十分簡單的數論事實:將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。
這裡的客戶端和後台非對稱加密是指,使用者第一次發起頁面請求時,後台(c#)生成一對公鑰和私鑰,客戶端利用js和私鑰對資料進行加密。這裡主要是有乙個js加密演算法和c#加密演算法相容的地方。在客戶端進行加密的主要原因是為了防止網路抓包,加密之後的資料即使被抓包,也是密文而不是明文。
後台**:
protectedstring 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...