MessageDigest ArrayIndexOutOfBoundsException

问题描述 投票:0回答:1

我在项目中使用

MessageDigest
来计算md5签名,但在性能测试期间它抛出了
ArrayIndexOutOfBoundsException

我发现一些帖子表明这是因为

MessageDigest
是单例且不是线程安全的。有谁知道我如何解决这个问题,或者是否有一个等效的线程安全的
MessageDigest
类?

java md5 indexoutofboundsexception
1个回答
22
投票

有人说这是因为

MessageDigest
是单例

那将是你的

MessageDigest
对象。不是班级本身。
MessageDigest.getInstance()
始终返回一个新实例:请参阅 Javadoc。

而不是线程保存。

线程安全。

现在,任何人都知道如何解决这个问题

不要在多个线程之间共享您的

MessageDigest
实例。甚至不要将其设为类成员:将其设为调用它的方法中的局部变量。

© www.soinside.com 2019 - 2024. All rights reserved.