Вопрос

Является API Надувного Замка Потокобезопасный ?Особенно,

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

Я планирую написать одноэлементный компонент Spring bean для поддержки криптографии базового уровня в моем приложении.Поскольку это веб-приложение, существует большая вероятность одновременного доступа нескольких потоков к этому компоненту.Таким образом, безопасность протектора здесь очень важна.

Пожалуйста, дайте мне знать, если вы сталкивались с подобными ситуациями, используя Надувной замок.

Это было полезно?

Решение

На самом деле не имеет значения, является ли 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 важен порядок.Любой алгоритм, где важен порядок, по определению не может быть потокобезопасным.

Вы можете создать одноэлементную фабрику, которая доставляет объекты шифрования, но вы не можете доверять их потокобезопасности.

Другие советы

Версия J2ME не является потокобезопасной.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top