76.6. 散列化消息身份验证代码(HMAC)


为了避免在传输 CryptoDataFormat 时对加密数据进行攻击,也可以根据可配置的 MAC 算法计算加密交换内容的消息身份验证代码。在加密后,计算的 HMAC 附加到流中。它在解密阶段的流分开。MAC 被重新计算并针对传输的版本进行验证,以保证在传输的版本不会被篡改。有关 Message Authentication Code 的更多信息,请参阅 http://en.wikipedia.org/wiki/HMAC

KeyGenerator generator = KeyGenerator.getInstance("DES");

CryptoDataFormat cryptoFormat = new CryptoDataFormat("DES", generator.generateKey());
cryptoFormat.setShouldAppendHMAC(true);

from("direct:hmac")
    .marshal(cryptoFormat)
    .to("mock:encrypted")
    .unmarshal(cryptoFormat)
    .to("mock:unencrypted");
Copy to Clipboard Toggle word wrap

或使用 spring。

<crypto id="hmac" algorithm="DES" keyRef="desKey" shouldAppendHMAC="true" />
Copy to Clipboard Toggle word wrap

默认情况下,HMAC 使用 HmacSHA1 mac 算法计算,但可以通过提供不同的算法名称来轻松更改。了解如何通过配置的安全供应商检查哪些算法

KeyGenerator generator = KeyGenerator.getInstance("DES");

CryptoDataFormat cryptoFormat = new CryptoDataFormat("DES", generator.generateKey());
cryptoFormat.setShouldAppendHMAC(true);
cryptoFormat.setMacAlgorithm("HmacMD5");

from("direct:hmac-algorithm")
    .marshal(cryptoFormat)
    .to("mock:encrypted")
    .unmarshal(cryptoFormat)
    .to("mock:unencrypted");
Copy to Clipboard Toggle word wrap

或使用 spring。

<crypto id="hmac-algorithm" algorithm="DES" keyRef="desKey" macAlgorithm="HmacMD5" shouldAppendHMAC="true" />
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat