当前位置:  开发笔记 > 编程语言 > 正文

Bouncy Castle API线程安全吗?

如何解决《BouncyCastleAPI线程安全吗?》经验,为你挑选了1个好方法。

是充气城堡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遇到过这种情况,请告诉我.



1> Tnilsson..:

API/Code是否是线程安全的并不重要.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工厂,但您不能相信它们是线程安全的.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有