消息验证代码 (message authentication code, MAC) 可计算文件的摘要并使用密钥进一步保护该摘要。MAC 不会修改原始文件。
% mac -l Algorithm Keysize: Min Max ----------------------------------- des_mac 64 64 sha1_hmac 8 512 md5_hmac 8 512 sha224_hmac 8 512 sha256_hmac 8 512 sha384_hmac 8 1024 sha512_hmac 8 1024
可以提供据以生成密钥的 passphrase(口令短语),也可以提供一个密钥。
如果提供密钥,则其大小必须是适用于相应机制的正确大小。您可以使用 pktool 命令。有关该过程和一些示例,请参见如何使用 pktool 命令生成对称密钥。
为 mac 命令提供密钥并使用对称密钥算法。
% mac [-v] -a algorithm [-k keyfile | -K key-label [-T token]] input-file
在下面的示例中,将使用 SHA1_HMAC 机制和基于口令短语的密钥对电子邮件附件进行验证。MAC 列表将保存到文件中。如果口令短语存储在某个文件中,则除了该用户之外,其他任何人都不能读取该文件。
% mac -v -a sha1_hmac email.attach Enter passphrase: Type passphrase sha1_hmac (email.attach) = 2b31536d3b3c0c6b25d653418db8e765e17fe07b % echo "sha1_hmac (email.attach) = 2b31536d3b3c0c6b25d653418db8e765e17fe07b" \ >> ~/sha1hmac.daily.05.12示例 3-6 使用 SHA1_HMAC 和密钥文件计算 MAC
在下面的示例中,将使用 SHA1_HMAC 机制和密钥对目录清单进行验证。结果存放于文件中。
% mac -v -a sha1_hmac \ -k $HOME/keyf/05.07.mack64 docs/* > $HOME/mac.docs.legal.05.07 % more ~/mac.docs.legal.05.07 sha1_hmac (docs/legal1) = 9b31536d3b3c0c6b25d653418db8e765e17fe07a sha1_hmac (docs/legal2) = 865af61a3002f8a457462a428cdb1a88c1b51ff5 sha1_hmac (docs/legal3) = 076c944cb2528536c9aebd3b9fbe367e07b61dc7 sha1_hmac (docs/legal4) = 7aede27602ef6e4454748cbd3821e0152e45beb4示例 3-7 使用 SHA1_HMAC 和密钥标签计算 MAC。
在下面的示例中,将使用 SHA1_HMAC 机制和密钥对目录清单进行验证。结果将放置在用户的 PKCS #11 密钥库中。用户最初通过使用 pktool setpin 命令创建了密钥库及其口令。
% mac -a sha1_hmac -K legaldocs0507 docs/* Enter pin for Sun Software PKCS#11 softtoken:Type password
要从密钥库中检索 MAC,用户应使用详细选项,并提供密钥标签和通过验证的目录名称。
% mac -v -a sha1_hmac -K legaldocs0507 docs/* Enter pin for Sun Software PKCS#11 softtoken:Type password sha1_hmac (docs/legal1) = 9b31536d3b3c0c6b25d653418db8e765e17fe07a sha1_hmac (docs/legal2) = 865af61a3002f8a457462a428cdb1a88c1b51ff5 sha1_hmac (docs/legal3) = 076c944cb2528536c9aebd3b9fbe367e07b61dc7 sha1_hmac (docs/legal4) = 7aede27602ef6e4454748cbd3821e0152e45beb4