1:公鑰加密→私鑰解密 用於防止密文被破解、被第三方得到明文;
2:私鑰加密→公鑰解密 用於防止明文被篡改,確保消息的完整性和正確的發送方。
3:那么既然為了防止明文被篡改,我們是不是直接都可以用公鑰加密的方式呢,這樣整串都是密文了, 其實當然也可以,只不過簽名的效率要高的多,而非對稱加解密很費時間,所有對於不值得加密的非關鍵性數據,還是用簽名合適
公鑰和私鑰在一些銀行系統、第三方支付系統SDK中經常會遇到,剛接觸公鑰私鑰的朋友們估計很難區分兩者的區別。
RSA公鑰和私鑰是什么?
首先來說,RSA是一種非對稱加密算法,它是由三位數學家(Rivest、Shamir、Adleman)設計出來的。非對稱加密是相對於對稱加密而言的。對稱加密算法是指加密解密使用的是同一個秘鑰,而非對稱加密是由兩個密鑰(公鑰、私鑰)來進行加密解密的,由此可見非對稱加密安全性更高。
公鑰顧名思義就是公開的密鑰會發放給多個持有人,而私鑰是私有密碼往往只有一個持有人。
公私鑰特性
-
公鑰與私鑰是成對出現的;
-
私鑰文件中包含了公鑰數據,所以可以基於私鑰導出公鑰;
-
密鑰越長,越難破解,所以2048位密鑰比1024位密鑰要更安全;
-
公鑰和私鑰都是密鑰,被公開的那個就是公鑰,沒有被公開的那個就是私鑰。
公鑰和私鑰都可用於加密和解密
公鑰和私鑰都可以用於加解密操作,用公鑰加密的數據只能由對應的私鑰解密,反之亦然。雖說兩者都可用於加密,但是不同場景使用不同的密鑰來加密,規則如下:
1、私鑰用於簽名、公鑰用於驗簽
簽名和加密作用不同,簽名並不是為了保密,而是為了保證這個簽名是由特定的某個人簽名的,而不是被其它人偽造的簽名,所以私鑰的私有性就適合用在簽名用途上。
私鑰簽名后,只能由對應的公鑰解密,公鑰又是公開的(很多人可持有),所以這些人拿着公鑰來解密,解密成功后就能判斷出是持有私鑰的人做的簽名,驗證了身份合法性。
2、公鑰用於加密、私鑰用於解密,這才能起到加密作用
因為公鑰是公開的,很多人可以持有公鑰。若用私鑰加密,那所有持有公鑰的人都可以進行解密,這是不安全的!
若用公鑰加密,那只能由私鑰解密,而私鑰是私有不公開的,只能由特定的私鑰持有人解密,保證的數據的安全性。