Bouncy Castle API 线程安全吗?

2023-12-28

Is 充气城堡 API http://bouncycastle.org/java.html线程安全?尤其,

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 实现中,顺序很重要。根据定义,任何顺序很重要的算法都不能是线程安全的。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bouncy Castle API 线程安全吗? 的相关文章

  • 使用itext java库复制时pdf文件大小大大增加

    我正在尝试使用 Java 中的 itextpdf 库将现有的 pdf 文件复制到一些新文件中 我使用的是 itextpdf 5 5 10 版本 我在两种方式上都面临着不同的问题 PDFStamper 和 PdfCopy 当我使用 PDFSt
  • 来自行号的方法名称

    给定特定类源代码 Java C 的行号 是否有一种简单的方法来获取它所属的方法的名称 如果它落入其中 大概使用抽象语法树 这对于将 checkstyle 的输出限制为仅触及的方法很有用 我假设您必须使用抽象语法树来执行 Line gt Me
  • 二元运算符 >=、-、* 的错误操作数类型

    我无法弄清楚如何修复代码中不断出现的这些错误 import java util Scanner public class Unit02Prog1 public static void main String args Scanner inp
  • Android Studio 与 Google Play 服务的编译问题

    我正在运行 Android Studio 0 8 4 并在 Android Studio 0 8 2 上尝试过此操作 我正在运行 Java JDK 1 8 0 11 并尝试使用 JDK 1 8 0 05 每当我尝试构建我的 android
  • 哈希密码字段使用什么数据类型以及长度?

    我不确定密码哈希是如何工作的 稍后将实现 但现在需要创建数据库模式 我正在考虑将密码限制为 4 20 个字符 但据我了解 加密后哈希字符串的长度将有所不同 那么 如何将这些密码存储在数据库中呢 更新 仅使用哈希函数不足以存储密码 你应该阅读
  • Android 信号 11 (SIGSEGV),代码 1 (SEGV_MAPERR) libwebviewchromium.so

    对于 android 4 4 我多次收到 Native crash at system lib libwebviewchromium so 错误 以下是设备包括 Xperia Z1 SO 01F 16 30 2 Galaxy Tab4 7
  • 当前平台不支持桌面 API

    我遇到过这个错误 java lang UnsupportedOperationException 当前平台不支持桌面 API 我将从我的 java 应用程序中打开一个文件 我用这个方法 Desktop getDesktop open new
  • 使用 https 的 Web 服务身份验证给出错误

    我编写了一个简单的 Web 服务 并使用摘要和 HTTPS 身份验证来保护它 我已经使用 Java 中的 keytool 生成了我的证书 当我通过创建 war 文件在 Tomcat 中部署 Web 服务时 axis 的欢迎页面正确显示 但是
  • 使用正则表达式验证电子邮件的最大长度

    我找到了用于电子邮件验证的正则表达式 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4 我希望电子邮件的最大长度为 20 个字符 因此我将其更改为 a z0 9 a z0 9 a z0 9 a z0 9 a z 2 4
  • 是否可以使用 Apache Tika 提取表信息?

    我正在寻找 pdf 和 MS Office 文档格式的解析器 以从文件中提取表格信息 当我看到 Apache Tika 时 正在考虑编写单独的实现 我能够从任何这些文件格式中提取全文 但我的要求是提取表格数据 我希望有 2 列采用键值格式
  • 是否可以创建 Java RAM 磁盘以与 java.io.* API 一起使用?

    我正在使用一个第三方库 它基本上创建一个输出目录 其中包含不同类型的文件和子目录 我希望能够编写单元测试来确认输出正确 我希望能够将库与 RAM 磁盘一起使用 这样库所做的任何事情都不会以任何方式接触实际的磁盘板 这个想法是让测试运行和清理
  • java绕中心旋转矩形

    我想围绕其中心点旋转一个矩形 它应该保留在应该绘制的位置并在该空间中旋转 这是我的代码 AffineTransform transform new AffineTransform transform rotate Math toRadian
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • 在约束验证器中使用 Guice 进行依赖注入

    我有一个在 ConstraintValidator 的实现中注入类的用例 我正在使用 Google guice 进行依赖项注入 目前无法在验证器内注入 我的场景的简化形式 内部模块 Provides Singleton public Ser
  • 添加 char 和 int

    据我了解 字符是一个字符 即一个字母 一个digit 标点符号 制表符 空格或类似的东西 因此 当我这样做时 char c 1 System out println c 输出 1 正是我所期望的 那么为什么当我这样做时 int a 1 ch
  • 如何使用 AffineTransform.quadrantRotate 旋转位图?

    我想旋转一个bitmap关于它的中心点 然后将其绘制成更大的图形上下文 位图是40x40 pixels 图形上下文是500x500 pixels 这就是我正在做的 BufferedImage bi new BufferedImage 500
  • 线程数组?

    所以我在理解如何避免线程的顺序执行时遇到了问题 我试图创建一个线程数组并在单独的循环中执行 start 和 join 函数 这是我现在拥有的代码示例 private static int w static class wThreads im
  • 文件加密与解密问题

    我一直在尝试在 VC Express 2010 中加密和解密文件 我见过的所有教程和文档都需要两个FileStreams 来加密文件 一个用于读取未加密的版本 另一个用于加密 当我实际编写代码时 它不断抛出错误 告诉我它无法打开该文件 因为
  • Spring MVC:通用 DAO 和服务类

    我正在 Spring MVC 中编写网页 我使用 Generic DAO 编写了所有 DAO 现在我想重写我的服务类 我该如何写 通用服务 我的 DAO 如下 DAO package net example com dao import j

随机推荐

  • 在 C# 中填充树结构的优雅且可维护的方式

    我有一棵树 class TreeNode public TreeNode string name string description Name name Description description string Name get se
  • AWS Lambda 不从队列中删除消息

    我使用以下代码从 SQS 事件触发 Lambda 函数 Override public Void handleRequest SQSEvent sqsEvent Context context for SQSMessage sqsMessa
  • 在arm7中使用gcc实现malloc问题:malloc返回NULL

    我在我的固件中添加了 malloc 支持 但我想我错过了一些东西 我对 arm7tdmi 处理器使用代码源 g lite 库 我的代码基于此链接中找到的示例 http e2e ti com support microcontrollers
  • 通过向下拖动关闭后,BottomSheetDialog 保持隐藏状态

    我对对方的行为很好奇BottomSheetDialog当它被解除时 当用户将其向下拖动以隐藏它时 它将保持隐藏状态 即使bottomSheetDialog show 之后被调用 这只发生在向下拖动时 而不是当用户触摸外部或当bottomSh
  • android 是否保存静态变量?

    我正在编写一个简单的 Android 应用程序 它基本上是对 Android 文档中提供的片段演示的修改 在应用程序中 有一个名为 Ipsum java 的文件 其中有一个名为 Headlines 的静态字符串数组列表 在主活动的 onCr
  • 如何在 django 模板中检查 DEBUG true/false - 完全在layout.html中[重复]

    这个问题在这里已经有答案了 我想区分一些工具栏的外观layout html取决于 DEBUG True 与否 我知道这一点answer https stackoverflow com questions 1271631 how to che
  • 分离分支的 git rebase 与 gitcherry-pick

    我有两个分支 master tmp tmp分支已分离我需要把tmp上面的分支master优先解决冲突tmp 当我做 git checkout tmp git rebase strategy recursive X theirs master
  • 增加 mysql docker 中的 max_allowed_pa​​cket 大小

    我们正在使用Docker对于mysql 我们在运行时遇到以下错误 Packet for query is too large 12884616 gt 4194304 You can change this value on the serv
  • 沿着时间序列索引连接 pandas DataFrame

    我有两只较大的 提供片段 熊猫DateFrames 具有不相等的日期作为索引 我希望将其合并为一个 NAB AX CBA AX Close Volume Close Volume Date Date 2009 06 05 36 51 496
  • 如何判断页面是否使用selenium加载?

    我正在与一个数据库进行交互 该数据库返回有关使用硒的事件的报纸报道 每次我执行搜索查询时 数据库都会打开一个新页面并开始加载有关该事件的所有报纸报道 该网页有一个元素报告找到的相关报告的总数 在页面完全加载之前 数字会发生变化 我的问题是有
  • 在 swift 中从地图计算距离和预计到达时间

    我目前正在使用下面的代码 它将打开带有前往某个目的地的驾驶指南的地图 let lat1 NSString 57 619302 let lng1 NSString 11 954928 let latitute CLLocationDegree
  • 集成测试 ASP.NET MVC 应用程序

    我需要一些关于为我们当前的 ASP NET MVC 应用程序编写集成测试的有效方法的建议 我们的架构包括 控制器下面的服务层 服务层 有时 使用存储库和消息队列将消息发送到外部应用程序 我认为应该做的是 单独为所有部分编写行为单元测试 因此
  • 简单的 HTML DOM - 子选择器 (CSS)

    我正在尝试选择父母的 直接 孩子div element使用 gt 组合器 但它失败了 HTML div class element p test p div div class element div class selected p te
  • 如何在c中打印utf-16字符

    int main char c 0x41 printf char is c n c c 0xe9 printf char is c n c unsigned int d 0x164e printf char is c n d return
  • 如何使用makefile包含C中另一个目录中的.a静态库和.h文件?

    我创建了一个 h头文件 实现并创建 a静态库文件 它们都位于目录中 home data folder1 我还有一个 c将使用链接的文件 h头文件和 a库文件 但是 那 c文件在目录中 home data folder2 我应该在 Makef
  • HTTP POST 请求上的跨源请求被阻止

    我正在将 http 请求从我的 Angular 客户端应用程序发送到 NET Core Web API 尽管我启用了 CORS 但还是收到 CORS 错误 当我向 SearchController 发送 GET 请求时 一切顺利 但是当我向
  • Clojure 的计算机代数

    简洁版本 我对一些 Clojure 代码感兴趣 它允许我指定 x 的变换 例如排列 旋转 在这些变换下函数 f x 的值是不变的 这样我就可以有效地生成满足 r 的 x 序列 f x Clojure 的计算机代数方面有进展吗 对于 一个简单
  • Angular url 加号转换为空格

    我有角度应用程序 我想在其中传递加号 在查询字符串中 例如 http localhost 3000 page name xyz manwal 当我点击这个 URL 时 它会转换为 http localhost 3000 page name
  • GitPython:git push - 设置上游

    我使用 GitPython 克隆主分支并签出功能分支 我进行本地更新 提交并推送回 git 代码片段如下所示 注意 我的分支名称是 feature pythontest def git clone repo Repo clone from
  • Bouncy Castle API 线程安全吗?

    Is 充气城堡 API http bouncycastle org java html线程安全 尤其 org bouncycastle crypto paddings PaddedBufferedBlockCipher org bouncy