Является замком Bouncy ориентированный на многопотоковое исполнение API?

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
11
задан Bohemian 23 December 2014 в 15:47
поделиться

1 ответ

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

13
ответ дан 3 December 2019 в 08:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: