- Notifications
You must be signed in to change notification settings - Fork144
Implementation of Data Encryption Standard (DES) in C
License
tarequeh/DES
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
C implementation of Data Encryption Standard algorithm.
The Data Encryption Standard (DES) is a block cipher (a form of shared secret encryption) that was selected by the NationalBureau of Standards as an official Federal Information Processing Standard (FIPS) for the United States in 1976 and whichhas subsequently enjoyed widespread use internationally. It is based on a symmetric-key algorithm that uses a 56-bit key.
This implementation of DES is not optimized in any way. The code has been written to provide readability and easyunderstanding of the algorithm. Padding scheme used in this implementation is [PKCS5]
This implementation has only been tested on Unix platform. But you may be able to compile/ run it on Windows.
- Make sure des.c, des.h and run_des.c are in the same directory
- Compile using: gcc -O3 des.c run_des.c -o run_des.o
Say we want to encrypt/ decrypt a file named /home/user/sample.txt
Generate a keyfile using:
run_des.o -g /tmp/keyfile.key
Encrypt sample.txt using:
run_des.o -e /tmp/keyfile.key /home/user/sample.txt /home/user/sample.enc
Decrypt sample.txt using:
run_des.o -d /tmp/keyfile.key /home/user/sample.enc /home/user/sample_decrypted.txt
Don't lose the key file! you won't be able to decrypt an encrypted if you lose the keyfile.
DES is provided for educational purposes only. Do not use for any other reason.It has been implemented afterJ. Orlin Grabbe's DES Algorithm Illustrated
It is possible to use this implementation to facilitate TripleDES encryption process:
Generate keys using:
run_des.o -g /tmp/keyfile1.keyrun_des.o -g /tmp/keyfile2.keyrun_des.o -g /tmp/keyfile3.key
Encrypt using:
run_des.o -e /tmp/keyfile1.key /home/user/sample.txt /home/user/sample.enc1run_des.o -e /tmp/keyfile2.key /home/user/sample.enc1 /home/user/sample.enc2run_des.o -e /tmp/keyfile3.key /home/user/sample.enc2 /home/user/sample.enc3
Decrypt using:
run_des.o -d /tmp/keyfile3.key /home/user/sample.enc3 /home/user/sample.dec3run_des.o -d /tmp/keyfile2.key /home/user/sample.dec3 /home/user/sample.dec2run_des.o -d /tmp/keyfile1.key /home/user/sample.dec2 /home/user/sample_decrypted.txt
The primary repository for DES is located at:http://github.com/tarequeh/DES/ The blog postdiscussing the implementation can be found at:CodeXNThis implementation of DES was written byTareque Hossain