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