加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Bouncy Castle API线程是否安全?

发布时间:2020-12-14 19:28:06 所属栏目:Java 来源:网络整理
导读:是 Bouncy Castle API线程安全吗?特别, org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipherorg.bouncycastle.crypto.paddings.PKCS7Paddingorg.bouncycastle.crypto.engines.AESFastEngineorg.bouncycastle.crypto.modes.CBCBlockCipher 我打算在
是 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的实施中,顺序很重要.顺序重要的任何算法根据定义不能是线程安全的.

您可以使一个提供加密对象的Singleton工厂,但您不能相信它们是线程安全的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读