Java - javax.crypto.Mac和javax.crypto.Cipher之间的区别?

时间:2016-03-07 01:35:33

标签: cryptography java hmac

我想了解javax.crypto.Macjavax.crypto.Cipher之间的区别。这两个类看起来非常相似(它们有类似的方法,但这两个类不会相互继承)。

  1. 这两个班级之间的根本区别是什么?
  2. 我应该何时使用(或不使用)Mac?
  3. 我应该何时使用(或不使用)密码?

1 个答案:

答案 0 :(得分:4)

Message Authentication Code是为了诚信。它在某些输入消息上计算出一种键控校验和"这取决于消息和密钥。通过密钥的知识,可以验证MAC以匹配给定消息。因此可以可靠地检测到改变。

Symmetric encryption algorithm用于保密。它将消息转换为不可读的位序列;如果解密密钥已知,则加密是可逆的。

MAC不保证机密性;消息保持原样,简单易读。加密不能确保完整性;改动可能未被发现。在正确应用的加密技术中,您需要两者。 (但请注意,这个"正确的术语很重要。)