DiceLockXTSDigested class is the class that implements DiceLock architecture with the following characteristics:
– base encryption cipher/decipher is a block cipher working with symmetric key,
– any hash digest algorithm is used to generate message hash digest from plaintext to be encrypted,
– ciphertext plus ciphered hash digest of plaintext is checked for random number test properties,
– any function that is able to change original symmetric key with new values,
– bit random number tests that can verify that encrypted ciphertext is at random.

Current algorithm classes that can be used with DiceLockXTSDigested architecture are:

PhysicalCryptoRandomStream class makes use of mlock that uses physical nonpaged memory, so memory is not swapped to hard disk.
In order to use PhysicalCryptoRandomStream class the process must be privileged (CAP_IPC_LOCK) in order to lock memory, and since Linux 2.6.9, no limits are placed on the amount of memory that a privileged process can lock and the RLIMIT_MEMLOCK soft resource defines the limit on how much memory an unprivileged process may lock.

At post bottom there are C++ Source Code links to all DiceLock cipher files being used to perform this configuration test.

From log file we can see that all randomized-encrypted text sequences have been correctly deciphered.

While DiceLockXTSDigestedFullBasedCheck was executed a log file of reciphered (plaintext sequences being ciphered more than one time in order to get sequences at random) text sequences has been stored.
DiceLockXTSDigestedFullBasedCheck reciphers log file is composed of rows, and each row shows hexadecimal value for each byte of symmetric key and plaintext, plaintext length in bits, data unit value, start block value within data unit, and number of reciphers executed with such plaintext and symmetric key.