Mac中的Mac#doFinal()线程安全吗?

11 java multithreading cryptography

在java中,我们需要为太多的文本数据生成HmacSHA1/256消息摘要,当然还需要并行生成.

现在问题是,javax.crypto.Mac#doFinal(byte[]:arg)通过sun/oracle(hotspot)实现SPI 是线程安全还是更好?

所有的盐密钥是相同的,我正在考虑准备一个Macobj,所有线程都会调用它来生成消息摘要.

我无法理解并用javadoc说明它.

如果这个人不是线程安全的,那么有没有相应的(可能来自Apache,......)?

谢谢.

Aug*_*sto 14

这些javax.crypto.Mac#doFinal方法都不是线程安全的,因为它们会改变MAC的内部状态.

这在任何时候都是有意义的,就像之前所有MAC的sum/xor一样,所以它不能并行完成.据我所知,没有MAC算法可以并行工作(与某些加密算法相反).

如上所述,Mac是可克隆的,所以如果你有一个用盐准备的实例,你可以克隆它并使用克隆来计算MAC(我会测试这个!)