Windows Source Code - DiceLock 9.0.0.1
Get C++ DiceLock cipher architecture source code packages of DiceLock for Microsoft Visual Studio 2013 and DiceLock-x for Linux with Test Driver Programs and Response Test Vector files to verify that both them work as expected.
DiceLock for Windows and Linux
DiceLock Security governing software licenses are Free/Libre Source Code License and Educational and Research License

DiceLock 9.0.0.1 is the C++ DLL for Windows that implements different DiceLock cipher architectures, symmetric ciphers like AES 128, AES 192, AES 256, Camellia 128, Camellia 192, Camellia 256, Serpent 128, Serpent 192, Serpent 256, Twofish 128, Twofish 192, Twofish 256 with CBC, CFB, OFB and XTS operation modes and TDEA and stream ciphers like ARC4, HC 128, HC 256, Sosemanuk, Sosemanuk 128, Sosemanuk 256, Rabbit, Salsa 20/20 128 and Salsa 20/20 256, some of NIST FIPS 800-22b random number tests, and hash algorithms as Md2, Md4, Md5 , Sah 1, Sha 224, Sha 256, Sha 384, Sha 512, Ripemd 128, Ripemd 160, Ripemd 256,and Ripemd 320 and more.

All algorithms can work with default virtual memory or with memory data kept in RAM, not swapped to hard disk.

C++ source code files can be found here.

Included memory management implementations are:

  • DefaultCryptoRandomStream (to work with default virtual memory),
  • PhysicalCryptoRandomStream (memory kept in RAM and not swapped to hard disk file).

DiceLock cipher architecture implementations are:

  • DiceLock Digested,
  • DiceLock Indexed.
  • DiceLock IV Digested,
  • DiceLock IV Indexed.
  • DiceLock XTS Digested,
  • DiceLock XTS Indexed.

DiceLock cipher architecture for Windows can be downloaded as a single .ZIP package from DiceLock 9.0.0.1 dll web site page.

A set of C++ test driver programs have been developed to verify that DiceLock cipher architecture perform as expected. They can be gotten from C++ Software Test Drivers.

These test driver programs and corresponding response test vector files are:

  Test driver program   Target   Test vector files page  
  CheckDiceLockBaseAlgorithms   Verification of all base encryption and security algorithms.   hardcoded test vector data  
  CheckDiceLockKeyModifiers   Verification of using symmetric encryption key modifiers to modify the encryption symmetric key to achieve encrypted-randomized sequences   hardcoded test vector data  
  CheckDiceLockIndexed   DiceLock cipher architecture making use of DiceLockIndexed formulation.   DiceLockIndexed test vectors  
  CheckDiceLockDigested   DiceLock cipher architecture making use of DiceLockDigested formulation.   DiceLockDigested test vectors  
  CheckDiceLockIVIndexed-CBC   DiceLock cipher architecture making use of DiceLockIVIndexed formulation with CBC block cipher operation mode.   DiceLockIVIndexed with CBC operation mode  
  CheckDiceLockIVIndexed-CFB   DiceLock cipher architecture making use of DiceLockIVIndexed formulation with CFB block cipher operation mode.   DiceLockIVIndexed with CFB operation mode  
  CheckDiceLockIVIndexed-OFB   DiceLock cipher architecture making use of DiceLockIVIndexed formulation with OFB block cipher operation mode.   DiceLockIVIndexed with OFB operation mode  
  CheckDiceLockIVIndexed-noOM   DiceLock cipher architecture making use of DiceLockIVIndexed formulation with no block cipher operation mode (actually using stream ciphers).   DiceLockIVIndexed with no operation mode  
  CheckDiceLockIVDigested-CBC   DiceLock cipher architecture making use of DiceLockIVDigested formulation with CBC block cipher operation mode.   DiceLockIVDigested with CBC operation mode  
  CheckDiceLockIVDigested-CFB   DiceLock cipher architecture making use of DiceLockIVDigested formulation with CFB block cipher operation mode.   DiceLockIVDigested with CFB operation mode  
  CheckDiceLockIVDigested-OFB   DiceLock cipher architecture making use of DiceLockIVDigested formulation with OFB block cipher operation mode.   DiceLockIVDigested with OFB operation mode  
  CheckDiceLockIVDigested-noOM   DiceLock cipher architecture making use of DiceLockIVDigested formulation with no block cipher operation mode (actually using stream ciphers).   DiceLockIVDigested with no operation mode  
  CheckDiceLockXTSIndexedFull   DiceLock cipher architecture making use of DiceLockXTSIndexed formulation operating over full plaintext length.   DiceLockXTSIndexed over full text  
  CheckDiceLockXTSIndexedSector   DiceLock cipher architecture making use of DiceLockXTSIndexed formulation operating over storage sector length base.   DiceLockXTSIndexed sector based  
  CheckDiceLockXTSDigestedFull   DiceLock cipher architecture making use of DiceLockXTSDigested formulation operating over full plaintext length.   DiceLockXTSDigested over full text  
  CheckDiceLockXTSDigestedSector   DiceLock cipher architecture making use of DiceLockXTSDigested formulation operating over storage sector length base.   DiceLockXTSDigested sector based  

 

DiceLock configurations

DiceLock configurations and algorithms that can be used with each one of them:

Ciphers & operation modes Random number tests Hash algorithms
DiceLockDigested ARC4
ARC4 Discarding initial bytes
Frequency Test
Block Frequency Test
Cumulative Sum Forward Test
Cumulative Sum Reverse Test
Runs Test
Longest Run Of Ones Test
Rank Test
Universal Test
Approximate Entropy Test
Serial Test
Discrete Fourier Transform Test
Sha 1
Sha 224
Sha 256
Sha 384
Sha 512
Ripemd 128
Ripemd 160
Ripemd 256
Ripemd 320
Md 2
Md 4
Md 5
DiceLockIndexed ARC4
ARC4 Discarding initial bytes
Frequency Test
Block Frequency Test
Cumulative Sum Forward Test
Cumulative Sum Reverse Test
Runs Test
Longest Run Of Ones Test
Rank Test
Universal Test
Approximate Entropy Test
Serial Test
Discrete Fourier Transform Test
DiceLockIVDigested - CBC, CFB and OFB block cipher operation modes making use of:
AES 128
AES 192
AES 256
Camellia 128
Camellia 192
Camellia 256
Serpent 128
Serpent 192
Serpent 256
Twofish 128
Twofish 192
Twofish 256
TDEA
- Stram ciphers:
HC 128
HC 256
Rabbit
Salsa 20/20 128
Salsa 20/20 256
Sosemanuk 128
Sosemanuk 256
Frequency Test
Block Frequency Test
Cumulative Sum Forward Test
Cumulative Sum Reverse Test
Runs Test
Longest Run Of Ones Test
Rank Test
Universal Test
Approximate Entropy Test
Serial Test
Discrete Fourier Transform Test
Sha 1
Sha 224
Sha 256
Sha 384
Sha 512
Ripemd 128
Ripemd 160
Ripemd 256
Ripemd 320
Md 2
Md 4
Md 5
DiceLockIVIndexed - CBC, CFB and OFB block cipher operation modes making use of:
AES 128
AES 192
AES 256
Camellia 128
Camellia 192
Camellia 256
Serpent 128
Serpent 192
Serpent 256
Twofish 128
Twofish 192
Twofish 256
TDEA
- Stram ciphers:
HC 128
HC 256
Rabbit
Salsa 20/20 128
Salsa 20/20 256
Sosemanuk 128
Sosemanuk 256
Frequency Test
Block Frequency Test
Cumulative Sum Forward Test
Cumulative Sum Reverse Test
Runs Test
Longest Run Of Ones Test
Rank Test
Universal Test
Approximate Entropy Test
Serial Test
Discrete Fourier Transform Test
DiceLockXTSDigested XTS operation mode making use of:
AES 128
AES 192
AES 256
Camellia 128
Camellia 192
Camellia 256
Serpent 128
Serpent 192
Serpent 256
Twofish 128
Twofish 192
Twofish 256
Frequency Test
Block Frequency Test
Cumulative Sum Forward Test
Cumulative Sum Reverse Test
Runs Test
Longest Run Of Ones Test
Rank Test
Universal Test
Approximate Entropy Test
Serial Test
Discrete Fourier Transform Test
Sha 1
Sha 224
Sha 256
Sha 384
Sha 512
Ripemd 128
Ripemd 160
Ripemd 256
Ripemd 320
Md 2
Md 4
Md 5
DiceLockXTSIndexed XTS operation mode making use of:
AES 128
AES 192
AES 256
Camellia 128
Camellia 192
Camellia 256
Serpent 128
Serpent 192
Serpent 256
Twofish 128
Twofish 192
Twofish 256
Frequency Test
Block Frequency Test
Cumulative Sum Forward Test
Cumulative Sum Reverse Test
Runs Test
Longest Run Of Ones Test
Rank Test
Universal Test
Approximate Entropy Test
Serial Test
Discrete Fourier Transform Test

 

Security algorithm used by DiceLock that can be used by themselves too:

Symmetric key block cipher implementations are:

  • AES (Advanced Encryption Standard) 128 bit key length,
  • AES (Advanced Encryption Standard) 192 bit key length,
  • AES (Advanced Encryption Standard) 256 bit key length,
  • Camellia 128 bit key length,
  • Camellia 192 bit key length,
  • Camellia 256 bit key length,
  • Serpent 128 bit key length,
  • Serpent 192 bit key length,
  • Serpent 256 bit key length,
  • Twofish 128 bit key length,
  • Twofish 192 bit key length,
  • Twofish 256 bit key length,
  • DEA 64 bit key length,
  • TDEA 192 bit key length.

All previous block ciphers can work with the following block cipher operation modes:

  • CBC, cipher-block chaining,
  • CFB, cipher feedback, and
  • OFB, output feedback.

And all versions of AES, Camellia, Serpent and Twofish can work with:

  • XTS, XEX-based tweaked-codebook mode with ciphertext stealing.

Cryptographic pad implementations are:

  • ANSI.X.923,
  • ISO/IEC.9797.1,
  • PKCS7.

Symmetric key stream cipher implementations are:

  • ARC4 (alleged RC4 cipher),
  • HC 128 bit key length,
  • HC 256 bit key length,
  • Rabbit,
  • Salsa 20/20 128 bit key length,
  • Salsa 20/20 256 bit key length,
  • Sosemanuk,
  • Sosemanuk 128 bit key length, and
  • Sosemanuk 256 bit key length.

Random number test implemented are:

  • Frequency Test,
  • Block Frequency Test,
  • Cumulative Sum Forward Test,
  • Cumulative Sum Reverse Test,
  • Runs Test,
  • Longest Run Of Ones Test,
  • Rank Test,
  • Universal Test,
  • Approximate Entropy Test,
  • Serial Test,
  • Discrete Fourier Transform Test.

Hash algorithms implemented are:

  • Sha 1,
  • Sha 224,
  • Sha 256,
  • Sha 384,
  • Sha 512,
  • Ripemd 128,
  • Ripemd 160,
  • Ripemd 256,
  • Ripemd 320.

DiceLock files:

DiceLock 9.0.0.1 is composed of the following files:

Windows Source Code DiceLock 9.0.0.1
DiceLockCipher.h
cryptoRandomStreams.h
baseCryptoRandomStream.h
baseCryptoRandomStream.cpp
defaultCryptoRandomStream.h
defaultCryptoRandomStream.cpp
physicalCryptoRandomStream.h
physicalCryptoRandomStream.cpp
diceLocks.h
DiceLock.h
DiceLock.cpp
DiceLockDigested.h
DiceLockDigested.cpp
DiceLockIndexed.h
DiceLockIndexed.cpp
DiceLockIV.h
DiceLockIV.cpp
DiceLockIVDigested.h
DiceLockIVDigested.cpp
DiceLockIVIndexed.h
DiceLockIVIndexed.cpp
diceLockXTSs.h
DiceLockXTS.h
DiceLockXTS.cpp
DiceLockXTSDigested.h
DiceLockXTSDigested.cpp
DiceLockXTSIndexed.h
DiceLockXTSIndexed.cpp
symmetricCiphers.h
baseSymmetricCipher.h
baseSymmetricCipher.cpp
symmetricStreamers.h
symmetricStreamerSpecialTypes.h
baseSymmetricStreamer.h
baseSymmetricStreamer.cpp
baseSymmetricStreamer_with_IV.h
baseSymmetricStreamer_with_IV.cpp
blockCipherOperationModes.h
baseBlockCipherOperationMode_with_IV.h
baseBlockCipherOperationMode_with_IV.cpp
CBC_Mode.h
CBC_Mode.cpp
CFB_Mode.h
CFB_Mode.cpp
OFB_Mode.h
OFB_Mode.cpp
XTS_Mode.h
XTS_Mode.cpp
blockCiphers.h
baseBlockCipher.h
baseBlockCipher.cpp
baseAES.h
baseAES.cpp
AES128.h
AES128.cpp
AES192.h
AES192.cpp
AES256.h
AES256.cpp
baseCamellia.h
baseCamellia.cpp
camellia128.h
camellia128.cpp
camellia192.h
camellia192.cpp
camellia256.h
camellia256.cpp
baseSerpent.h
baseSerpent.cpp
serpent128.h
serpent128.cpp
serpent192.h
serpent192.cpp
serpent256.h
serpent256.cpp
baseTwofish.h
baseTwofish.cpp
twofish128.h
twofish128.cpp
twofish192.h
twofish192.cpp
twofish256.h
twofish256.cpp
DEA.h
DEA.cpp
TDEA.h
TDEA.cpp
cryptoPads.h
baseCryptoPad.h
baseCryptoPad.cpp
ANSI_X_923.h
ANSI_X_923.cpp
ISO_IEC_9797_1.h
ISO_IEC_9797_1.cpp
PKCS7.h
PKCS7.cpp
streamCiphers.h
baseStreamCipher.h
baseStreamCipher.cpp
ARC4.h
ARC4.cpp
ARC4_Discarding.h
ARC4_Discarding.cpp
baseStreamCipher_with_IV.h
baseStreamCipher_with_IV.cpp
HC128.h
HC128.cpp
HC256.h
HC256.cpp
rabbit.h
rabbit.cpp
baseSalsa20_20.h
baseSalsa20_20.cpp
salsa20_20_128.h
salsa20_20_128.cpp
salsa20_20_256.h
salsa20_20_256.cpp
sosemanuk.h
sosemanuk.cpp
sosemanuk128.h
sosemanuk128.cpp
sosemanuk256.h
sosemanuk256.cpp
keyModifiers.h
baseKeyModifier.h
baseKeyModifier.cpp
increaseKeyModifier_6_0_0_1.h
increaseKeyModifier_6_0_0_1.cpp
decreaseKeyModifier_6_0_0_1.h
decreaseKeyModifier_6_0_0_1.cpp
indexModifiers.h
baseIndexModifier.h
baseIndexModifier.cpp
arithmeticFunctions.h
arithmeticFunctions.cpp
increaseBase0IndexModifier_6_0_0_1.h
increaseBase0IndexModifier_6_0_0_1.cpp
decreaseBase0IndexModifier_6_0_0_1.h
decreaseBase0IndexModifier_6_0_0_1.cpp
randomTests.h
randomTestErrors.h
baseRandomTest.h
baseRandomTest.cpp
mathematicalErrors.h
mathematicalFunctions.h
mathematicalFunctions.cpp
approximateEntropyTest.h
approximateEntropyTest.cpp
blockFrequencyTest.h
blockFrequencyTest.cpp
cumulativeSumForwardTest.h
cumulativeSumForwardTest.cpp
cumulativeSumReverseTest.h
cumulativeSumReverseTest.cpp
discreteFourierTransformTest.h
discreteFourierTransformTest.cpp
frequencyTest.h
frequencyTest.cpp
longestRunOfOnesTest.h
longestRunOfOnesTest.cpp
rankTest.h
rankTest.cpp
runsTest.h
runsTest.cpp
serialTest.h
serialTest.cpp
universalTest.h
universalTest.cpp
randomTestSuite.h
randomTestSuite.cpp
hashes.h
baseHash.h
baseHash.cpp
baseSha32.h
baseSha32.cpp
sha1.h
sha1.cpp
sha224.h
sha224.cpp
sha256.h
sha256.cpp
sha384.h
sha384.cpp
sha512.h
sha512.cpp
baseRipemd.h
baseRipemd.cpp
baseRipemd128X.h
baseRipemd128X.cpp
ripemd128.h
ripemd128.cpp
ripemd256.h
ripemd256.cpp
baseRipemd160X.h
baseRipemd160X.cpp
ripemd160.h
ripemd160.cpp
ripemd320.h
ripemd320.cpp
md2.h
md2.cpp
md4.h
md4.cpp
md5.h
md5.cpp
hashSuite.h
hashSuite.cpp

Obviously all files are available at http://www.dicelocksecurity.com/ as a single package.