MessageDigest ArrayIndexOutOfBoundsException

发布于 2024-12-08 18:15:47 字数 206 浏览 1 评论 0原文

我在项目中使用 MessageDigest 来计算 md5 签名,但在性能测试期间它抛出了 ArrayIndexOutOfBoundsException 。

我发现一些帖子表明这是因为 MessageDigest 是单例且不是线程安全的。有谁知道我如何解决这个问题,或者是否有一个等效的线程安全的 MessageDigest 类?

I use MessageDigest to calculate the md5 signature in my project, but during the performance test it throws an ArrayIndexOutOfBoundsException.

I have found a few posts that suggest this is because MessageDigest is a singleton and not thread safe. Does anyone know how I can get around this problem, or if there is an equivalent MessageDigest class that is thread safe?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

智商已欠费 2024-12-15 18:15:47

有人说这是因为 MessageDigest 是单例

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

而不是线程保存。

线程安全。

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

不要在多个线程之间共享您的 MessageDigest 实例。甚至不要将其设为类成员:将其设为调用它的方法中的局部变量。

somebody says that this is beacause MessageDigest is singleton

That would be your MessageDigest object. Not the class itself. MessageDigest.getInstance() always returns a new instance: see the Javadoc.

and not thread save.

Thread safe.

Now, anyone knows how to solve this problem

Don't share your MessageDigest instance among multiple threads. Don't even make it a class member: make it a local variable in the method(s) that call it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文