時間:2019-8-13
假設有 A ,B 兩個服務器,
它們有各自的公鑰和私鑰。
大家都知道,公鑰是公開的!
所以 A 和 B 互相知道對方的 公鑰
A 向 B 發文件。
A 會把 自己 要發的數據 和 B的公鑰 打包。
那麼這串數據 也就只有 B 能用自己的私鑰解開了。
ok,這是一種情況。
那假如有黑客 C。
C 想要破解 A 發的數據就必須要 B 的私鑰了。
所以 C 其實是破解不了的。
但是 C 不老實,他不喜歡 A,就把 A 發的 數據 篡改了。
那麼 B 解開 A 發的數據之後,並不知道 A 發的數據已經被 C 篡改了。(因爲 B 剛開始也不知道 A 發的數據是什麼)
所以呢!
https 就是說 A 會給 B 發一串數據,然後再發一個hash。
這樣 B 收到 A 的數據之後,會再次通過數據生成 hash,如果 hash 一樣,那麼他就知道,這是 A 發過來的數據,並且是未被篡改的!
因爲 傳輸的數據其實都是密文,所以 C 篡改的時候只能是瞎改。
B 解出 A 的數據會是一串明文 和 一串 hash。
用 明文 生成 hash,如果相等,則表示是 A 發過來的!
其實 公鑰 和 私鑰 是可以互相解密的
A 想給 B, C, D, E, F ... 發數據怎麼辦呢?
如果想把自己知道的數據廣播出去,想知道就可以看。
那麼其實是這樣的。他會把 數據 和 自己的 私鑰 加密。
大家可以用他的 公鑰 來解密
===============================================================
# 這裏補充一個問題。
爲什麼根據 私鑰 能推出來 公鑰,但是 公鑰 卻推不出 私鑰 來呢?
因爲私鑰是這樣的。我就舉個簡單的例子吧。
私鑰:19
公鑰: 9
那麼 可以看出 公鑰 = 私鑰[0] * 私鑰[1] 也就是說 9 = 1 * 9
但是如果只是擁有公鑰也就是9 你知道私鑰嗎?
當然了,現實中的 私鑰 和 公鑰 特別長,根本不是這樣簡單的。