Saved searches

Use saved searches to filter your results more quickly

Cancel Create saved search Sign up Reseting focus

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

tarequeh / DES Public

Implementation of Data Encryption Standard (DES) in C

License

Notifications You must be signed in to change notification settings

tarequeh/DES

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Go to file

Folders and files

Last commit message Last commit date

Latest commit

History

View all files

Repository files navigation

DES in C

C implementation of Data Encryption Standard algorithm.

Overview

The Data Encryption Standard (DES) is a block cipher (a form of shared secret encryption) that was selected by the National Bureau of Standards as an official Federal Information Processing Standard (FIPS) for the United States in 1976 and which has 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 easy understanding of the algorithm. Padding scheme used in this implementation is [PKCS5]

Compilation & Installation

  1. Make sure des.c, des.h and run_des.c are in the same directory
  2. Compile using: gcc -O3 des.c run_des.c -o run_des.o

Usage

Say we want to encrypt/ decrypt a file named /home/user/sample.txt

    Generate a keyfile using:

run_des.o -g /tmp/keyfile.key
run_des.o -e /tmp/keyfile.key /home/user/sample.txt /home/user/sample.enc
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.

More

DES is provided for educational purposes only. Do not use for any other reason. It has been implemented after J. 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.key run_des.o -g /tmp/keyfile2.key run_des.o -g /tmp/keyfile3.key
run_des.o -e /tmp/keyfile1.key /home/user/sample.txt /home/user/sample.enc1 run_des.o -e /tmp/keyfile2.key /home/user/sample.enc1 /home/user/sample.enc2 run_des.o -e /tmp/keyfile3.key /home/user/sample.enc2 /home/user/sample.enc3
run_des.o -d /tmp/keyfile3.key /home/user/sample.enc3 /home/user/sample.dec3 run_des.o -d /tmp/keyfile2.key /home/user/sample.dec3 /home/user/sample.dec2 run_des.o -d /tmp/keyfile1.key /home/user/sample.dec2 /home/user/sample_decrypted.txt