數字簽名:數字簽名被認為是對手寫簽名的數位化模擬。
手寫簽名的重要特徵為:
1、自己的簽名只有自己可以製作;
2、自己的簽名可以由其他任何人驗證有效性;
3、自己的簽名只對某一特定檔案發生聯絡,不能用於支援其他檔案;
在說明數字簽名之前,需要了解密碼學的一些基本概念:
明文:訊息的初始形式
密文:加密後的形式
金鑰:指某個用來完成 加密、 解密、完整性驗證等密碼學應用的秘密 資訊。
對稱加密以及非對稱加密:
對稱加密演算法指的是在加密和解密的時候使用的是同乙個秘鑰,同乙個金鑰可以同時用作資訊的加密和解密。
需要金鑰的加密演算法記為:c=e(k,p),並且p=d(k,e(k,p))。
其工作過程如圖所示:
而非對稱加密演算法則需要不同的兩個金鑰來進行加密和解密,這兩個金鑰一般分別叫做公鑰和私鑰。
加密與解密的金鑰不同,則:p=d(kd,e(ke,p))。公鑰和私鑰成對出現,是通過某一種加密演算法得到乙個金鑰對,公鑰是金鑰對中公開的部分,私鑰則是非公開的部分。使用這個金鑰對的時候,如果用其中乙個金鑰加密一段資料,必須用另乙個金鑰解密。比如用公鑰加密資料就必須用私鑰解密,如果用私鑰加密也必須用公鑰解密,否則解密將不會成功。
其工作過程如圖所示:
步驟1-3
步驟1: a通過隨機演算法,生成一對金鑰,有公鑰和私鑰;
步驟2:a將公鑰公開,分別發給b,c,d;
步驟3:b想給a傳送一條資訊,首先用a的公鑰對這條資訊加密,然後將加密後的資訊(密文)傳播給a,a在接收到資訊之後,用自己的私鑰進行解密,從而得到b給a的資訊原文。
那麼數字簽名,就是只有資訊的傳送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對資訊的傳送者傳送資訊真實性的乙個有效證明。數字簽名的生成和使用過程如下圖所示:
步驟4-5
步驟4:a將要傳送的資訊通過雜湊運算,得到摘要,並用私鑰進行加密,生成這個資訊的數字簽名。
步驟5:a將所要傳送的資訊和數字簽名同時傳送給b,b利用a的公鑰來對此數字簽名解密,從而確定該資訊的確來自a。另外,b通過對a傳送的資訊進行雜湊運算得到的摘要與解密得到的摘要進行對比,可以確定該資訊是否被篡改過。
一文讀懂Nginx
問 nginx的負載均衡演算法有什麼?預設是什麼演算法?答 1 輪詢 按請求的時間輪詢查空閒的後端伺服器 2 指定輪詢機率 機率的原因是後端伺服器的效能不均勻,好的多分點,差的少分點 3 固定ip繫結固定伺服器 預設是加權輪詢,就是優先訪問權重高的伺服器 問 nginx是單執行緒的嗎?答 是單執行緒...
一文讀懂SpringMVC
主要講的是dispatcherservlet這個類 ioc其實是乙個map,工程啟動後掃瞄路徑,根據類的全限定名建立bean 問 怎麼根據路徑找到方法?map還存key為 aaa value為該controller例項 問 autowired原理?自定義註解,在載入的時候,掃瞄controller層...
堆疊 一文讀懂
堆疊 stack 是一種先進後出的 操作受限的線性表,也可以直接稱為棧。可以把棧想象成乙個桶一樣,往這個桶裡面一層一層的放東西,先放進去的在裡面,後放進去的東西依次在外面。但取東西的時候就是先取靠近外面的,再依次一層層取裡面的。這就是 後進先出 last in first out 的原則。因此 棧 ...