Crypto++
8.8
Free C++ class library of cryptographic schemes

XTS block cipher mode of operation. More...
Public Types  
typedef CipherModeFinalTemplate_CipherHolder< typename CIPHER::Encryption, XTS_Final< CIPHER > >  Encryption 
typedef CipherModeFinalTemplate_CipherHolder< typename CIPHER::Decryption, XTS_Final< CIPHER > >  Decryption 
Public Types inherited from SymmetricCipherDocumentation  
typedef SymmetricCipher  Encryption 
implements the SymmetricCipher interface  
typedef SymmetricCipher  Decryption 
implements the SymmetricCipher interface  
XTS block cipher mode of operation.
CIPHER  BlockCipher derived class or type 
XTS mode is a wide block mode defined by IEEE P16192008. NIST SP80038E approves the mode for storage devices citing IEEE 16192007. IEEE 16192007 provides both a reference implementation and test vectors. The IEEE reference implementation fails to arrive at the expected result for some test vectors.
XTS is only defined for AES. The library can support wide block ciphers like Kaylna and Threefish since we know the polynomials. There is risk involved with using XTS with wider block ciphers. According to Phillip Rogaway, "The narrow width of the underlying PRP and
the poor treatment of fractional final blocks are problems." To enable wide block cipher support define CRYPTOPP_XTS_WIDE_BLOCK_CIPHERS
to nonzero.