© Czeslaw Koscielny 2006 Academy of Management in Legnica, Poland, Faculty of Computer Science, Wroclaw University of Applied Informatics, Poland
e mail: c.koscielny@wsm.edu.pl
Overview of the GenDES Package
Calling Sequence
GenDES[command](arguments)
command(arguments)
Description
The GenDES package is a collection of routines for exploring DES, for computer-aided design related to DES secure symmetric-key block ciphers which allow to encrypt 64-bit block of data with the key of maximal length from 768 to 2359 bits, and for encrypting files by means of the old and generalized form of this algorithm, using Maple. The package is a noteworthy tool suitable for engineers, teachers and students who deal with symmetric-key iterative block ciphers design.
Each command in the GenDES package can be accessed by using either the long form or the short form of the command name in the command calling sequence.It is possible to use the form GenDES:-command to access a command from the package, because the implementation of the GenDES package is a module.
To be self-sufficient, the main topics concerning DES are now reminded. However, it is recommended to the reader the study of [1] and [2], where full details of this algorithm are given. An interesting approach to cryptography can also be found in [3].
Fig. 1. Key schedule generation
Fig. 2. Permuted choice PC-1 (first 4 rows above C0, rows below D0)
Fig. 3. Permuted choice PC-2
Fig. 4 Number of left shifts versus the iteration number.
Fig. 5. Enciphering computation
Fig. 6. Initial permutation IP
Fig. 7. Inverse of the initial permutation IP-1
Fig. 8.Calculation of f(R, K)
Fig. 9. E bit-selection table
Fig. 10. Permutation P
S1
S2
S3
S4
S5
S6
S7
S8
Fig. 11. Primitive functions S1 - S8 (S-boxes)
Fig. 12.Determining the value of S4(r1 ,c3 ,c2 , c1, c0, r0),
row no. = 2r1+r0, column no. = 8c3+4c2+2c1+c0,
(e.g. if r1 r0 = 01, c3 c2 c1 c0 = 1101 then the output equals to convert(10, binary) = 1010)
The key schedule generation algorithm (Fig. 1) uses two permuted choice functions PC-1 and PC-2, shown in Fig. 2 and 3, and left circular shifts, depending on the number of round, according to Fig. 4.
The enciphering algorithm in Fig. 5 is presented. The 64 bits of the input block of message for the encryption transformation are first subjected to the initial permutation IP. The key-dependent computation that uses the permuted input block as its input to produce the preoutput block consists, except for a final interchange of blocks, of 16 rounds of a computation using the function f. This function operates on two blocks, one of 32 bits and one of 48 bits, to produce a 32-bit block. The preoutput block, i.e. R16L16, after inverse initial permutation, forms a block of 64-bit cryptogram. DES decryption consists of the encryption algorithm with the same key but reversed key schedule, using in order K16, K15, ..., K1, and, of course, with the 64-bit cryptogram on the input.
DES, similarly as IDEA and AES, belongs to a class of iterated block ciphers involving the sequential repetition of a round function and a particular subkey for each round. For any iterated block cipher encryption procedure is described by means of the equation
C = E(ks(K), M) (1)
where E denotes two-variable encrypting function, K - a secret key chosen by the user, and M - a message to be encrypted. The secret key K is not directly used for encryption but it serves as input data for the function ks, generating a key schedule, i.e. subkeys for each iteration. A number of cryptologists suspect that the function ks intends to "inject" into the cryptogram as much additional information about bits of the secret key as possible, during the encryption process, instead of maximizing the diffusion and confusion. This additional information may deliver - to the privileged circle of the initiated - a manner of deciphering cryptograms without the knowledge of the secret key. To verify the justness of this suspicion one ought to find and analyze an explicit function F, which, taking into account both the encryption and key schedule generation algorithm, will allow to express symbolically the cryptogram
C = F(K, M) (2)
and to compute it in one step, using the secret key K and the message M. But, in the case of the iterated block ciphers this task is almost unfeasible.
May be, because of this suspicion, it has been announced in [2] that "The DES has now been withdrawn. The use of DES is permitted only as a component function of TDEA" and that "with the withdrawal of the FIPS 46-3 standard:
1. Triple DES (i.e., TDEA), as specified in ANSI X9.52, Keying Options 1 and 2, is recognized as the only FIPS approved DES algorithm.
2. Other implementations of the DES function are no longer authorized for protection of Federal government information.
Note: Through the year 2030, Triple DES (TDEA) and the FIPS 197 Advanced Encryption Standard (AES) will coexist as FIPS approved algorithms – thus, allowing for a gradual transition to AES. (The AES is a new symmetric based encryption standard approved by NIST)".
However, the triple DES, and even AES, are much more weaker and more complicated than the standard DES, but used according to the method discussed below.
To transform DES into a secure cipher it simply suffices to eliminate the key expansion algorithm, i.e. to generate arbitrarily the set of subkeys Ks for all iterations and to use it as a secret key. Then, applying the same encrypting algorithm E as in (1) we now compute the cryptogram of the message M according to
C = E(Ks, M) (3)
and we are sure that all bits of our modified secret key Ks participate in the encryption process. Thus, since DES needs sixteen 48-bit subkeys, we will obtain in this way the 768-bit secret key to protect a 64-bit block of data.
Introducing small changes into the DES implementation we can further strengthen its protecting power. Namely, we can treat the initial permutation IP, primitive functions S1 - S8 (S-boxes), permutation P and 16 elements of the selection table E (with indices 1, 6, 7, 12, 13, 18, 19, 24, 25, 30, 31, 36, 37, 42, 43, 48) as components of the secret key and in this way enlarge additionally the key space. Since there are
permutations IP,
sets of S-boxes,
permutations P,
selection functions E,
then the increase of a secret key length will be
? = (4)
that is 1591 bits. Therefore, we can easily construct a generalized DES-based symmetric-key block cipher accepting the secret key of length up to 2359 bits, or to design 0.868406571810479 related to DES ciphers which use 768-bit key. There are also many other possibilities of designing DES-based secure ciphers, taking into account the secret key length, the secret sharing, data base encrypting, etc.
List of GenDES Package Commands
dbhist(10, 100, 13, r, tan);
will produce light brown histogram showing the frequency of occurrence of such dibits in the examined file, which are composed of the first byte of value 13, while the value of the second byte changes from 10 to 100. Thus, this histogram shows the following elements of the array dbfa: dbfa[13, 10], dbfa[13, 11], ..., dbfa[13, 100], namely, a portion of 13th row of the array dbfa, representing 91 consecutive elements of this array. Similarly, the statement
dbhist(0, 255, 135, c, khaki);
will create yellowish brown histogram, exemplifying the whole 135th column of the array dbfa, that is the elements dbfa[0, 135], dbfa[1, 135] , ..., dbfa[255, 135]. The details concerning the applications of the above three commands can be found in [4] and [5].
Examples
01206C7B881E9BF4
Creating S-boxes for DES and verifying the primitive function S8
Creating random S-boxes for strong DES implementations and verifying the primitive function S8
Displaying truth tables of S-boxes for the DES
Standard DES S boxes
Truth table for S1 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 1 Truth table for S2 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 Truth table for S3 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 0 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 Truth table for S4 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 1 1 0 1 1 0 0 1 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 Truth table for S5 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 Truth table for S6 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 1 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 0 1 Truth table for S7 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 1 1 1 0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 0 1 1 1 1 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 1 0 0 Truth table for S8 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1
Displaying truth tables of random S-boxes for strong DES encryption
DES Random S boxes
Truth table for S1 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 1 1 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 0 0 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 0 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 1 0 1 Truth table for S2 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 0 1 1 0 1 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 Truth table for S3 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 1 1 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 0 1 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 0 1 0 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 Truth table for S4 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 Truth table for S5 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 1 1 0 0 1 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 1 0 Truth table for S6 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 Truth table for S7 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 1 0 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 1 1 1 0 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 1 0 1 0 Truth table for S8 ----------------------------------- input output ----------------------------------- r1 c3 c2 c1 c0 r0 s3 s2 s1 s0 =================================== 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 0 1 0 0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 1 1 0 1 0 0 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0
Displaying primitive functions S1 - S8
Computing the 16 subkeys if the secret key Key is given as a list of 64 bits
The number of different subkeys equals to 16
Computing the 16 subkeys if the secret key Key is given as a list of 64 bits using an equivalent command
Computing the key schedule if the secret key Key is given in the symbolic form
General form of subkeys for each iteration
Computing the subkeys for encryption with the 768-bit secret key given as a list of 768 bits
Computing the subkeys for encryption with the 768-bit secret key, which is given as a list of 96 characters
Computing the subkeys for encryption with the 768-bit secret key, which is given as a list of 96 numbers of type nonnegint
Computing the constants for the DES
Computing the constants for strong DES encryption
Printing the body of the procedure which implements a command of the package:
GenDES:-DESkeysch := proc(Key::list) local i, k, PC1, PC2, ks, C, D, CD, KPC1, KI; 1 ks := [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]; 2 PC1 := [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4]; 3 PC2 := [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32]; 4 CD := array(1 .. 16); 5 KI := array(1 .. 16); 6 KPC1 := []; 7 for i to 56 do 8 KPC1 := [op(KPC1), Key[PC1[i]]] end do; 9 C := array(0 .. 16); 10 D := array(0 .. 16); 11 C[0] := [seq(KPC1[i],i = 1 .. 28)]; 12 D[0] := [seq(KPC1[i],i = 29 .. 56)]; 13 for i to 16 do 14 if ks[i] = 1 then 15 C[i] := [seq(C[i-1][k],k = 2 .. 28), C[i-1][1]]; 16 D[i] := [seq(D[i-1][k],k = 2 .. 28), D[i-1][1]] elif ks[i] = 2 then 17 C[i] := [seq(C[i-1][k],k = 3 .. 28), C[i-1][1], C[i-1][2]]; 18 D[i] := [seq(D[i-1][k],k = 3 .. 28), D[i-1][1], D[i-1][2]] end if; 19 CD[i] := [op(C[i]), op(D[i])]; 20 KI[i] := []; 21 for k to 48 do 22 KI[i] := [op(KI[i]), CD[i][PC2[k]]] end do end do; 23 convert(KI,list) end proc
The above procedure, a little intricated, may be simply implemented by means of 16 assignmet statements:
GenDES:-DESkeyschv := proc(k::list) local KS; 1 KS := [seq([],GenDES:-i = 1 .. 16)]; 2 KS[1] := [k[10], k[51], k[34], k[60], k[49], k[17], k[33], k[57], k[2], k[9], k[19], k[42], k[3], k[35], k[26], k[25], k[44], k[58], k[59], k[1], k[36], k[27], k[18], k[41], k[22], k[28], k[39], k[54], k[37], k[4], k[47], k[30], k[5], k[53], k[23], k[29], k[61], k[21], k[38], k[63], k[15], k[20], k[45], k[14], k[13], k[62], k[55], k[31]]; 3 KS[2] := [k[2], k[43], k[26], k[52], k[41], k[9], k[25], k[49], k[59], k[1], k[11], k[34], k[60], k[27], k[18], k[17], k[36], k[50], k[51], k[58], k[57], k[19], k[10], k[33], k[14], k[20], k[31], k[46], k[29], k[63], k[39], k[22], k[28], k[45], k[15], k[21], k[53], k[13], k[30], k[55], k[7], k[12], k[37], k[6], k[5], k[54], k[47], k[23]]; 4 KS[3] := [k[51], k[27], k[10], k[36], k[25], k[58], k[9], k[33], k[43], k[50], k[60], k[18], k[44], k[11], k[2], k[1], k[49], k[34], k[35], k[42], k[41], k[3], k[59], k[17], k[61], k[4], k[15], k[30], k[13], k[47], k[23], k[6], k[12], k[29], k[62], k[5], k[37], k[28], k[14], k[39], k[54], k[63], k[21], k[53], k[20], k[38], k[31], k[7]]; 5 KS[4] := [k[35], k[11], k[59], k[49], k[9], k[42], k[58], k[17], k[27], k[34], k[44], k[2], k[57], k[60], k[51], k[50], k[33], k[18], k[19], k[26], k[25], k[52], k[43], k[1], k[45], k[55], k[62], k[14], k[28], k[31], k[7], k[53], k[63], k[13], k[46], k[20], k[21], k[12], k[61], k[23], k[38], k[47], k[5], k[37], k[4], k[22], k[15], k[54]]; 6 KS[5] := [k[19], k[60], k[43], k[33], k[58], k[26], k[42], k[1], k[11], k[18], k[57], k[51], k[41], k[44], k[35], k[34], k[17], k[2], k[3], k[10], k[9], k[36], k[27], k[50], k[29], k[39], k[46], k[61], k[12], k[15], k[54], k[37], k[47], k[28], k[30], k[4], k[5], k[63], k[45], k[7], k[22], k[31], k[20], k[21], k[55], k[6], k[62], k[38]]; 7 KS[6] := [k[3], k[44], k[27], k[17], k[42], k[10], k[26], k[50], k[60], k[2], k[41], k[35], k[25], k[57], k[19], k[18], k[1], k[51], k[52], k[59], k[58], k[49], k[11], k[34], k[13], k[23], k[30], k[45], k[63], k[62], k[38], k[21], k[31], k[12], k[14], k[55], k[20], k[47], k[29], k[54], k[6], k[15], k[4], k[5], k[39], k[53], k[46], k[22]]; 8 KS[7] := [k[52], k[57], k[11], k[1], k[26], k[59], k[10], k[34], k[44], k[51], k[25], k[19], k[9], k[41], k[3], k[2], k[50], k[35], k[36], k[43], k[42], k[33], k[60], k[18], k[28], k[7], k[14], k[29], k[47], k[46], k[22], k[5], k[15], k[63], k[61], k[39], k[4], k[31], k[13], k[38], k[53], k[62], k[55], k[20], k[23], k[37], k[30], k[6]]; 9 KS[8] := [k[36], k[41], k[60], k[50], k[10], k[43], k[59], k[18], k[57], k[35], k[9], k[3], k[58], k[25], k[52], k[51], k[34], k[19], k[49], k[27], k[26], k[17], k[44], k[2], k[12], k[54], k[61], k[13], k[31], k[30], k[6], k[20], k[62], k[47], k[45], k[23], k[55], k[15], k[28], k[22], k[37], k[46], k[39], k[4], k[7], k[21], k[14], k[53]]; 10 KS[9] := [k[57], k[33], k[52], k[42], k[2], k[35], k[51], k[10], k[49], k[27], k[1], k[60], k[50], k[17], k[44], k[43], k[26], k[11], k[41], k[19], k[18], k[9], k[36], k[59], k[4], k[46], k[53], k[5], k[23], k[22], k[61], k[12], k[54], k[39], k[37], k[15], k[47], k[7], k[20], k[14], k[29], k[38], k[31], k[63], k[62], k[13], k[6], k[45]]; 11 KS[10] := [k[41], k[17], k[36], k[26], k[51], k[19], k[35], k[59], k[33], k[11], k[50], k[44], k[34], k[1], k[57], k[27], k[10], k[60], k[25], k[3], k[2], k[58], k[49], k[43], k[55], k[30], k[37], k[20], k[7], k[6], k[45], k[63], k[38], k[23], k[21], k[62], k[31], k[54], k[4], k[61], k[13], k[22], k[15], k[47], k[46], k[28], k[53], k[29]]; 12 KS[11] := [k[25], k[1], k[49], k[10], k[35], k[3], k[19], k[43], k[17], k[60], k[34], k[57], k[18], k[50], k[41], k[11], k[59], k[44], k[9], k[52], k[51], k[42], k[33], k[27], k[39], k[14], k[21], k[4], k[54], k[53], k[29], k[47], k[22], k[7], k[5], k[46], k[15], k[38], k[55], k[45], k[28], k[6], k[62], k[31], k[30], k[12], k[37], k[13]]; 13 KS[12] := [k[9], k[50], k[33], k[59], k[19], k[52], k[3], k[27], k[1], k[44], k[18], k[41], k[2], k[34], k[25], k[60], k[43], k[57], k[58], k[36], k[35], k[26], k[17], k[11], k[23], k[61], k[5], k[55], k[38], k[37], k[13], k[31], k[6], k[54], k[20], k[30], k[62], k[22], k[39], k[29], k[12], k[53], k[46], k[15], k[14], k[63], k[21], k[28]]; 14 KS[13] := [k[58], k[34], k[17], k[43], k[3], k[36], k[52], k[11], k[50], k[57], k[2], k[25], k[51], k[18], k[9], k[44], k[27], k[41], k[42], k[49], k[19], k[10], k[1], k[60], k[7], k[45], k[20], k[39], k[22], k[21], k[28], k[15], k[53], k[38], k[4], k[14], k[46], k[6], k[23], k[13], k[63], k[37], k[30], k[62], k[61], k[47], k[5], k[12]]; 15 KS[14] := [k[42], k[18], k[1], k[27], k[52], k[49], k[36], k[60], k[34], k[41], k[51], k[9], k[35], k[2], k[58], k[57], k[11], k[25], k[26], k[33], k[3], k[59], k[50], k[44], k[54], k[29], k[4], k[23], k[6], k[5], k[12], k[62], k[37], k[22], k[55], k[61], k[30], k[53], k[7], k[28], k[47], k[21], k[14], k[46], k[45], k[31], k[20], k[63]]; 16 KS[15] := [k[26], k[2], k[50], k[11], k[36], k[33], k[49], k[44], k[18], k[25], k[35], k[58], k[19], k[51], k[42], k[41], k[60], k[9], k[10], k[17], k[52], k[43], k[34], k[57], k[38], k[13], k[55], k[7], k[53], k[20], k[63], k[46], k[21], k[6], k[39], k[45], k[14], k[37], k[54], k[12], k[31], k[5], k[61], k[30], k[29], k[15], k[4], k[47]]; 17 KS[16] := [k[18], k[59], k[42], k[3], k[57], k[25], k[41], k[36], k[10], k[17], k[27], k[50], k[11], k[43], k[34], k[33], k[52], k[1], k[2], k[9], k[44], k[35], k[26], k[49], k[30], k[5], k[47], k[62], k[45], k[12], k[55], k[38], k[13], k[61], k[31], k[37], k[6], k[29], k[46], k[4], k[23], k[28], k[53], k[22], k[21], k[7], k[63], k[39]]; 18 KS end proc
Details
For more information about applications of the GenDES package concerning:
References
[1] NIST: DATA ENCRYPTION STANDARD (DES), FIPS PUB 46-3, October 1999
[2] William C. Barker: Recommendation for the Triple Data Encryption Algorithm (TDEA) Block Cipher, NIST Special Publication 800-67, May 2004
[3] Michael May: Cryptography: Complete Set of Lessons,
http://www.maplesoft.com/applications/app_center_browse.aspx?CID=5&SCID=6, October 2003
[4] Czeslaw Koscielny: Maple Tools for Preliminary Cryptanalysis,
http://www.maplesoft.com/applications/app_center_browse.aspx?CID=5&SCID=6, April 2004
[5] Czeslaw Koscielny: Secure Symmetric-Key Block Cipher Based on Generalized Finite Fields,
http://www.maplesoft.com/applications/app_center_browse.aspx?CID=5&SCID=6, November 2005