gpt4 book ai didi

java - Bouncy CaSTLe API 线程安全吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:27:15 27 4
gpt4 key购买 nike

Bouncy Castle API线程安全?特别是,

org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher
org.bouncycastle.crypto.paddings.PKCS7Padding
org.bouncycastle.crypto.engines.AESFastEngine
org.bouncycastle.crypto.modes.CBCBlockCipher

我计划在我的应用程序中编写一个单例 Spring bean 以提供基本级别的加密支持。由于它是一个 web 应用程序,因此多个线程同时访问该组件的可能性更大。因此,胎面安全在这里至关重要。

如果您在使用 Bouncy CaSTLe 时遇到过此类情况,请告诉我。

最佳答案

API/代码是否线程安全并不重要。 CBC 加密本身不是线程安全的。一些术语 -

E(X) = Enctrypt message X
D(X) = Dectrypt X. (Note that D(E(X)) = X)
IV = Initialization vector. A random sequence to bootstrap the CBC algorithm
CBC = Cipher block chaining.

一个非常简单的 CBC 实现看起来像:P1、P2、P3 = 纯文本消息

1. Generate an IV, just random bits.
2. Calculate E( P1 xor IV) call this C1
3. Calculate E( P2 xor C1) call this C2
4. Calculate E( P3 xor C2) call this C3.

如您所见,加密 P1、P2 和 P3(按此顺序)的结果与加密 P2、P1 和 P3(按此顺序)的结果不同。

因此,在 CBC 实现中,顺序很重要。根据定义,任何顺序很重要的算法都不是线程安全的。

您可以创建一个交付加密对象的单例工厂,但您不能相信它们是线程安全的。

关于java - Bouncy CaSTLe API 线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49473/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com