我想了解javax.crypto.Mac和javax.crypto.Cipher之间的区别。这两个类看起来非常相似(它们有类似的方法,但这两个类不会相互继承)。
答案 0 :(得分:4)
Message Authentication Code是为了诚信。它在某些输入消息上计算出一种键控校验和"这取决于消息和密钥。通过密钥的知识,可以验证MAC以匹配给定消息。因此可以可靠地检测到改变。
Symmetric encryption algorithm用于保密。它将消息转换为不可读的位序列;如果解密密钥已知,则加密是可逆的。
MAC不保证机密性;消息保持原样,简单易读。加密不能确保完整性;改动可能未被发现。在正确应用的加密技术中,您需要两者。 (但请注意,这个"正确的术语很重要。)