必要に応じて使用できるようにする必要がありnew NISTCTSBlockCipher(NISTCTSBlockCipher.CS1, aes)
ます。おそらく違いを生んでいることが 1 つあります。AES ブロック暗号を直接フィードする必要があります。たとえば、次のようになります。
AESFastEngine aes = new AESFastEngine();
NISTCTSBlockCipher aescbccts = new NISTCTSBlockCipher(NISTCTSBlockCipher.CS1, aes);
CTSBlockCipher
これは、期待しているように見えるものとは異なりますCBCBlockCipher
(とにかくCBC + CTS操作の場合)。
CBC をフィードすると、面白いことに、CBC = ECB が再び 2 倍になります。
CTB_n = E(CTB_n-1 XOR CTB_n-1 XOR PTB_n) = E(PTB_n).
ウィキペディアから:
ここでの番号付けは、それらすべてを説明している Dworkin から取られています。3 つ目は最も人気があり、Daemen と Schneier によって説明されています。Meyer は、関連するが互換性のないスキームについて説明しています (ビット順序とキーの使用に関して)。
Bouncy が CS3 を実装していることを確認しました。したがって、(ArtjomBが示唆するように)使用できるはずですがCTSBlockCipher
、(部分的な)最後と最初から最後のブロックを交換した後にのみ使用できます。
または、単純に を書き直すこともできCTSBlockCipher
ます。Bouncy Castle には非常に寛容なライセンスがあります。