summaryrefslogtreecommitdiff
path: root/Assignment 3/des-demo.py
diff options
context:
space:
mode:
authorCamil Staps2016-02-12 15:01:00 +0100
committerCamil Staps2016-02-12 15:01:00 +0100
commitefd533331d6a7f0c51ef857af448a6c84c3084ed (patch)
tree7f28f4e20a215784f27643ad49029332204528b2 /Assignment 3/des-demo.py
parentMakefile (diff)
Removed spaces in path
Diffstat (limited to 'Assignment 3/des-demo.py')
-rwxr-xr-xAssignment 3/des-demo.py62
1 files changed, 0 insertions, 62 deletions
diff --git a/Assignment 3/des-demo.py b/Assignment 3/des-demo.py
deleted file mode 100755
index 0a4954f..0000000
--- a/Assignment 3/des-demo.py
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (c) 2015 Camil Staps <info@camilstaps.nl>
-
-import sys, getopt, binascii
-from Crypto.Cipher import DES
-
-def main(argv):
- key = ''
- plaintext = ''
- ciphertext = ''
-
- # Parse arguments. Use -h for help.
- try:
- opts, args = getopt.getopt(argv, "hk:p:c:", ["key=","plaintext=","ciphertext="])
- except getopt.GetoptError:
- usage()
- sys.exit(2)
-
- for opt, arg in opts:
- if opt == '-h':
- usage()
- sys.exit()
- elif opt in ("-k", "--key"):
- key = binascii.a2b_hex(arg)
- elif opt in ("-p", "--plaintext"):
- plaintext = binascii.a2b_hex(arg)
- elif opt in ("-c", "--ciphertext"):
- ciphertext = binascii.a2b_hex(arg)
-
- if key == '' or plaintext == '' and ciphertext == '':
- usage()
- sys.exit(2)
-
- # PyCrypto does the hard work
- cipher = DES.new(key, DES.MODE_ECB)
-
- encryption = ''
- decryption = ''
-
- if plaintext != '':
- encryption = cipher.encrypt(plaintext)
- if ciphertext != '':
- decryption = cipher.decrypt(ciphertext)
-
- # When plaintext and ciphertext are provided, output if DES[k](p) = c. Otherwise, output the encryption / decryption.
- if encryption != '' and decryption != '':
- print encryption == ciphertext
- elif encryption != '':
- print binascii.b2a_hex(encryption)
- elif decryption != '':
- print binascii.b2a_hex(decryption)
-
-def usage():
- print 'Usage: des-demo.py -k <key> [-p <plaintext>] [-c <ciphertext>]'
- print ' key : an 8-byte value entered as hexadecimal numbers'
- print ' plaintext : an 8-byte value entered as hexadecimal numbers'
- print ' ciphertext : an 8-byte value entered as hexadecimal numbers'
- print 'At least one of plaintext and ciphertext should be provided. When both are provided, we check if DES[k](p) = c.'
-
-if __name__ == "__main__":
- main(sys.argv[1:])