2016-03-07 168 views
0

我想了解javax.crypto.Macjavax.crypto.Cipher之間的區別。這兩個類看起來非常相似(它們有相似的方法,但這兩個類不會相互繼承)。Java - javax.crypto.Mac和javax.crypto.Cipher之間的區別?

  1. 這兩個類別之間的根本區別是什麼?
  2. 什麼時候應該使用(或不使用)Mac?
  3. 什麼時候應該使用(或不使用)密碼?
+3

該頁面明確指出一個用於消息認證代碼另一個用於加密/解密 –

回答

4

A Message Authentication Code是爲了完整性。它在某些輸入消息上計算一種依賴於消息和密鑰的「密鑰校驗和」。在知道密鑰的情況下,MAC可以被驗證以匹配給定的消息。因此可以可靠地檢測到變化。

A Symmetric encryption algorithm是爲了保密。它將消息轉換成不可讀的位序列;只要解密密鑰是已知的,加密是可逆的。 MAC不保證機密性;該消息保持原樣,清晰可讀。加密不能確保完整性;更改可能未被發現。在正確應用的密碼學中,你需要兩個。 (但是請注意,這個「正確」的術語很大。)

+0

非常明確,謝謝Tom Leek,我有更好的理解,謝謝你(+1) – Gugelhupf