其實公鑰和私鑰都可以用來加密或解密---只要能保證用A加密,就用B解密就行。至於A是公鑰還是私鑰,其實可以根據不同的用途而定。例如說,如果你想把某個訊息秘密的發給某人,那你就可以用他的公鑰加密。因為只有他知道他的私鑰,所以這訊息也就只有他本人能解開,於是你就達到了你的目的。但是如果你想釋出一個公告,需要一個手段來證明這確實是你本人發的,而不是其他人冒名頂替的。那你可以在你的公告開頭或者結尾附上一段用你的私鑰加密的內容(例如說就是你公告正文的一段話),那所有其他人都可以用你的公鑰來解密,看看解出來的內容是不是相符的。如果是的話,那就說明這公告確實是你發的---因為只有你的公鑰才能解開你的私鑰加密的內容,而其他人是拿不到你的私鑰的。最後再說一下數字簽名。數字簽名無非就兩個目的:證明這訊息是你發的;證明這訊息內容確實是完整的---也就是沒有經過任何形式的篡改(包括替換、缺少、新增)。其實,上面關於“公告”那段內容,已經證明了第一點:證明這訊息是你發的。那麼要做到第二點,也很簡單,就是把你公告的原文做一次雜湊(md5或者sha1都行),然後用你的私鑰加密這段雜湊作為簽名,並一起公佈出去。當別人收到你的公告時,他可以用你的公鑰解密你的簽名,如果解密成功,並且解密出來的雜湊值確實和你的公告原文一致,那麼他就證明了兩點:這訊息確實是你發的,而且內容是完整的。其實概念很簡單:
其實公鑰和私鑰都可以用來加密或解密---只要能保證用A加密,就用B解密就行。至於A是公鑰還是私鑰,其實可以根據不同的用途而定。例如說,如果你想把某個訊息秘密的發給某人,那你就可以用他的公鑰加密。因為只有他知道他的私鑰,所以這訊息也就只有他本人能解開,於是你就達到了你的目的。但是如果你想釋出一個公告,需要一個手段來證明這確實是你本人發的,而不是其他人冒名頂替的。那你可以在你的公告開頭或者結尾附上一段用你的私鑰加密的內容(例如說就是你公告正文的一段話),那所有其他人都可以用你的公鑰來解密,看看解出來的內容是不是相符的。如果是的話,那就說明這公告確實是你發的---因為只有你的公鑰才能解開你的私鑰加密的內容,而其他人是拿不到你的私鑰的。最後再說一下數字簽名。數字簽名無非就兩個目的:證明這訊息是你發的;證明這訊息內容確實是完整的---也就是沒有經過任何形式的篡改(包括替換、缺少、新增)。其實,上面關於“公告”那段內容,已經證明了第一點:證明這訊息是你發的。那麼要做到第二點,也很簡單,就是把你公告的原文做一次雜湊(md5或者sha1都行),然後用你的私鑰加密這段雜湊作為簽名,並一起公佈出去。當別人收到你的公告時,他可以用你的公鑰解密你的簽名,如果解密成功,並且解密出來的雜湊值確實和你的公告原文一致,那麼他就證明了兩點:這訊息確實是你發的,而且內容是完整的。其實概念很簡單:
小明想秘密給小英發送訊息小英手裡有一個盒子(public key),這個盒子只有小英手裡的鑰匙(private key)才打得開小英把盒子送給小明(分發公鑰)小明寫好訊息放進盒子裡,鎖上盒子(公鑰加密)小明把盒子寄給小英(密文傳輸)小英用手裡的鑰匙開啟盒子,得到小明的訊息(私鑰解密)假設小剛劫持了盒子,因為沒有小英的鑰匙,他也打不開