1. 程式人生 > >JavaSE--[轉]加密和簽名的區別

JavaSE--[轉]加密和簽名的區別

href table net 發出 ref fix csdn art 內容

轉載:http://blog.csdn.net/u012467492/article/details/52034835

私鑰用來簽名的,公鑰用來驗簽的。公鑰加密私鑰解密是秘送,私鑰加密公鑰解密是簽名

作者:CM Binder

就拿A給B發送經過簽名加密信息來說:
1、A對信息簽名的作用是確認這個信息是A發出的,不是別人發出的;
2、加密是對內容進行機密性保護,主要是保證信息內容不會被其他人獲取,只有B可以獲取。

也就是保證整個過程的端到端的唯一確定性,這個信息是A發出的(不是別人),且是發給B的,只有B才被獲得具體內容(別人就算截獲信息也不能獲得具體內容)。

這只是大概說了作用,具體說來,涉及到密鑰相關的東西。密鑰有公鑰和私鑰之分。

那麽這裏一共有兩組四個密鑰:A的公鑰(PUB_A),A的私鑰(PRI_A);B的公鑰(PUB_B),B的私鑰(PRI_B)。

公鑰一般用來加密,私鑰用來簽名。

通常公鑰是公開出去的,但是私鑰只能自己私密持有。

公鑰和私鑰唯一對應,用某個公鑰簽名過得內容只能用對應的私鑰才能解簽驗證;同樣用某個私鑰加密的內容只能用對應的公鑰才能解密。

這時A向B發送信息的整個簽名和加密的過程如下:
1、A先用自己的私鑰(PRI_A)對信息(一般是信息的摘要)進行簽名。
2、A接著使用B的公鑰(PUB_B)對信息內容和簽名信息進行加密。

這樣當B接收到A的信息後,獲取信息內容的步驟如下:
1、用自己的私鑰(PRI_B)解密A用B的公鑰(PUB_B)加密的內容;
2、得到解密後的明文後用A的公鑰(PUB_A)解簽A用A自己的私鑰(PRI_A)的簽名。

從而整個過程就保證了開始說的端到端的唯一確認。A的簽名只有A的公鑰才能解簽,這樣B就能確認這個信息是A發來的;A的加密只有B的私鑰才能解密,這樣A就能確認這份信息只能被B讀取。

JavaSE--[轉]加密和簽名的區別