Ejemplo n.º 1
0
def entropy_test(FilePath, DesType, Key):

    try:
        file_object = open(FilePath, 'rb')

    except FileNotFoundError:
        print("File Not Found. ")
        print("Exiting...")
        sys.exit()

    plaintext = file_object.read()

    # Check the DesType.
    if DesType == 'des':
        d = pydes.des()
        ciphertext = d.encrypt(Key, plaintext)

    elif DesType == 'des96':
        d = pydes96.des()
        ciphertext = d.encrypt(Key, plaintext)

    elif DesType == 'tripledes':

        Key0 = Key[0:8]
        Key1 = Key[8:16]
        Key2 = Key[16:24]

        plaintext, ciphertext = tripledes.tripledes(FilePath, Key0, Key1, Key2)

    # Return entropies of plaintext and ciphertext.
    return find_entropy(plaintext), find_entropy(ciphertext)
Ejemplo n.º 2
0
 def encrypt(self, data, key):
     print()
     print('BEFORE encrypt:', data)
     encrypted = des().encrypt(str(key), str(data), padding=True)
     print('AFTER encrypt:', encrypted)
     print()
     return encrypted
Ejemplo n.º 3
0
def avalanche_test_on_message(FilePath, DesType, Key):

    try:
        file_object = open(FilePath, 'rb')

    except FileNotFoundError:
        print("File Not Found. ")
        print("Exitting...")
        sys.exit()

    if DesType == 'des':
        d = pydes.des()

    elif DesType == 'des96':
        d = pydes96.des()

    print("Reading and encrypting original plaintext. ")
    # Original Plaintext
    plaintext_0 = file_object.read()
    ciphertext_0 = d.encrypt(Key, plaintext_0)
    print(plaintext_0, ciphertext_0)

    print("Reading and encrypting plaintext with 1 bit difference")
    # Changing 1 bit.
    plaintext_1 = change_bits(plaintext_0, 1)
    ciphertext_1 = d.encrypt(Key, plaintext_1)
    print(plaintext_1, ciphertext_1)
Ejemplo n.º 4
0
def TestPydes():
    data = "Pleaseencrypt my data"
    k = pydes.des("DESCRYPT",
                  pydes.CBC,
                  "\0\0\0\0\0\0\0\0",
                  pad=None,
                  padmode=pydes.PAD_PKCS5)
    k1 = pydes.des("DESCRYP1",
                   pydes.CBC,
                   "\0\0\0\0\0\0\0\0",
                   pad=None,
                   padmode=pydes.PAD_PKCS5)
    d = k.encrypt(data)
    print("Encrypted:")
    print(d)
    print("Decrypted: ")
    print(k1.decrypt(d))
Ejemplo n.º 5
0
def encoder(data, key):
    k = pyDes.des(key[:8],
                  pyDes.CBC,
                  "\0\0\0\0\0\0\0\0",
                  pad=None,
                  padmode=pyDes.PAD_PKCS5)
    d = k.encrypt(data)
    return str(d)[2:-1]
Ejemplo n.º 6
0
 def decrypt(self, data, key):
     print()
     print('BEFORE decrypt:', data)
     decrypted = des().decrypt(str(key), data, padding=True)
     decrypted = make_tuple(decrypted)
     print('AFTER decrypt:', decrypted)
     print()
     return decrypted
Ejemplo n.º 7
0
def decoder(data, key):
    k = pyDes.des(key[:8],
                  pyDes.CBC,
                  "\0\0\0\0\0\0\0\0",
                  pad=None,
                  padmode=pyDes.PAD_PKCS5)
    b = bytes(data, "utf-8")
    b = b.decode('unicode-escape').encode('ISO-8859-1')
    return str(k.decrypt(b))[2:-1]
Ejemplo n.º 8
0
def descifrarDES():
    key = entry_1.get()
    name_file = entry_2.get()
    file = open(name_file, 'r')
    text = file.read()
    d = des()
    plain = d.decrypt(key, text, padding=True)
    file = open('msjDescifradoDES.txt', 'w')
    file.write(plain)
    file.close()
    print("Descifrado DES: ", plain)
Ejemplo n.º 9
0
def cifrarDES():
    key = entry_1.get()
    name_file = entry_2.get()
    file = open(name_file, 'r')
    text = file.read()
    d = des()
    ciphered = d.encrypt(key, text, padding=True)
    file = open('msjCifradoDES.txt', 'w')
    file.write(ciphered)
    file.close()
    print("Cifrado DES: %r" % ciphered)
def DES_ED(num, key, mess):
    d = des()
    if num == 1:
        cipher = d.encrypt(key, mess, padding=True)
        cipher = 'The Calculated Cipher is : ' + cipher
        Result = tk.Label(E_Result, font=A_Trans, text=cipher, bg="#d8d2d6")
        Result.pack(side='top')
    if num == 2:
        message = d.decrypt(key, mess, padding=True)
        message = 'The Calculated Message is : ' + message
        dResult = tk.Label(D_Result, font=A_Trans, text=message, bg="#d8d2d6")
        dResult.pack(side='top')
Ejemplo n.º 11
0
def cbc_encrypt(plain):
    enc = des()
    enc.setkey(KEY)

    iv = os.urandom(8)
    plain = pad(plain)
    blocks = [plain[i:i + 8] for i in range(0, len(plain), 8)]

    ct = iv
    for block in blocks:
        pt = ''.join([chr(ord(a) ^ ord(b)) for a, b in zip(iv, block)])
        iv = enc.encrypt_block(pt)
        ct += iv
    return ct
Ejemplo n.º 12
0
def calc_mac_cbc(**kw):
    """ 计算报文MAC值(CBC算法) """
    tmk = kw.get("TMK", "159D86C7C1F779EA29F77A6858E0DA2A")
    mak = kw.get("MAK", "E6218EF29513B143")
    vec = kw.get("IV", "\x00\x00\x00\x00\x00\x00\x00\x00")
    mab = kw.get("MAB", None)
    vec = vec.encode('latin1')
    mab += ''.rjust(8 - len(mab) % 8, '\x00').encode('latin1')
    des3 = pydes.triple_des(unhexlify(tmk))
    mackey = des3.decrypt(unhexlify(mak))
    des = pydes.des(mackey)
    for i in range(0, len(mab), 8):
        vec = bytes(list(map(lambda a, b: a ^ b, vec, mab[i:i + 8])))
        vec = des.encrypt(vec)
    return hexlify(vec).upper().decode('latin1')
Ejemplo n.º 13
0
def calc_mac_ecb(**kw):
    """ 计算报文MAC值(ECB算法) """
    tmk = kw.get("TMK", "159D86C7C1F779EA29F77A6858E0DA2A")
    mak = kw.get("MAK", "E6218EF29513B143")
    mab = kw.get("MAB", None)
    mab += ''.rjust(8 - len(mab) % 8, '\x00').encode('latin1')
    mab = reduce(lambda x, y: bytes(list(map(lambda a, b: a ^ b, x, y))),
                 [mab[i:i + 8] for i in range(0, len(mab), 8)])
    des3 = pydes.triple_des(unhexlify(tmk))
    mackey = des3.decrypt(unhexlify(mak))
    des = pydes.des(mackey)
    ret = des.encrypt(hexlify(mab[:4]).upper())
    ret = bytes(list(map(lambda x, y: x ^ y, ret, hexlify(mab[4:]).upper())))
    ret = des.encrypt(ret)
    return hexlify(hexlify(ret[:4]).upper()).decode('latin1')
Ejemplo n.º 14
0
def tripledes(FilePath, Key0, Key1, Key2):

    try:
        file_object = open(FilePath, 'rb')

    except FileNotFoundError:
        print("File Not Found. ")
        print("Exitting...")
        sys.exit()

    plaintext = file_object.read()

    if len(plaintext) % 8 != 0:
        plaintext = plaintext + (8 - (len(plaintext) % 8)) * '0'

    D = pydes.des()

    print("Stage1: Encrypt(E1 Stage)")
    E_Output0 = D.encrypt(Key0, plaintext)
    print("Stage1: Encrypt done. ")

    print("Stage2: Decrypt(D Stage)")
    E_Output1 = D.decrypt(Key1, E_Output0)
    print("Stage2: Decrypt done. ")

    print("Stage3: Encrypt(E2 Stage)")
    E_Output2 = D.encrypt(Key2, E_Output1)
    print("Stage3: Encrypt done. ")

    print("Complete Encryption done. ")

    ciphertext = E_Output2

    # Decryption process - DED
    #D_Output0 = D.decrypt(k2, ciphertext)
    #D_Output1 = D.encrypt(k1, D_Output0)
    #D_Output2 = D.decrypt(k0, D_Output1)

    #plaintext_1 = D_Output2

    file_object.close()

    return plaintext, ciphertext
Ejemplo n.º 15
0
def random_test_des(FilePath, Key) : 

    try: 
        file_object = open(FilePath, 'rb')
    
    except FileNotFoundError : 
        print("File Not Found.")
        print("Exiting...")
        sys.exit()
    
    # Store the complete binary in the buffer
    plaintext = str(file_object.read())
    
    # Encrypt the plaintext
    d = pydes.des()
    ciphertext = d.encrypt(Key, plaintext, True)

    plaintext_zero_count, plaintext_one_count = count_zero_one(plaintext)
    ciphertext_zero_count, ciphertext_one_count = count_zero_one(ciphertext)

    return plaintext_zero_count, plaintext_one_count, ciphertext_zero_count, ciphertext_one_count
Ejemplo n.º 16
0
def avalanche_test_on_key(FilePath, DesType, Key0, Key1, Key2, Key3):

    try:
        file_object = open(FilePath, 'rb')

    except FileNotFoundError:
        print("File Not Found. ")
        print("Exitting...")
        sys.exit()

    if DesType == 'des':
        d = pydes.des()

    elif DesType == 'des96':
        d = pydes96.des()

    print("Reading and encrypting original plaintext. ")
    # Original Plaintext
    plaintext_0 = file_object.read()
    if len(plaintext_0) % 8 != 0:
        x = len(plaintext_0) - len(plaintext_0) % 8
        plaintext_0 = plaintext_0[:x]
    ciphertext_0 = d.encrypt(Key0, plaintext_0)
    #print(plaintext_0, ciphertext_0)
    file_object.close()

    ciphertext_1 = d.encrypt(Key1, plaintext_0)
    ciphertext_2 = d.encrypt(Key2, plaintext_0)
    ciphertext_3 = d.encrypt(Key3, plaintext_0)

    # Find the hamming distance.
    hamming_distance_01 = find_hamming_distance(ciphertext_0, ciphertext_1)
    hamming_distance_02 = find_hamming_distance(ciphertext_0, ciphertext_2)
    hamming_distance_03 = find_hamming_distance(ciphertext_0, ciphertext_3)

    return hamming_distance_01, hamming_distance_02, hamming_distance_03
Ejemplo n.º 17
0
            
                
            else : 
                unpack('H', char)
            
            print(char)

        #bit_char = bin(int(char))

    
    #print(byte_array)

    return bitarray


if __name__ == '__main__' : 

    file_object = open("./test_files/ls", 'rb')
    plaintext = file_object.read()

    d = pydes.des()
    ciphertext = d.encrypt('12345678', plaintext)

    plaintext = list(plaintext)
    ciphertext = list(ciphertext)

    plaintext_bitarray = bit_array_gen(plaintext)
    ciphertext_bitarray = bit_array_gen(ciphertext)
    

Ejemplo n.º 18
0
            def chat(self, data):
                """接收聊天信息并打印"""
                sender = data['from']
                receiver = data['to']
                logArea = self.father.logArea
                log = ctime() + " Receive Message\n\n"

                encryptedMessage = data['encryptedMessage']
                encryptedKey = data['encryptedKey']
                signature = data['signature']
                senderPubKey = data['senderPubKey']
                decryptionType = self.father.father.selfInfo['decryptionType']
                # message = ''
                r = RSA(0)
                priKey = self.father.father.selfInfo['priKey']
                key = r.decryption(encryptedKey, priKey)
                if self.father.father.selfInfo['communicationType'] == 'rsa':

                    # priKey = self.father.father.selfInfo['priKey']
                    if len(encryptedMessage) > 5:
                        result = r.verify(encryptedMessage[0:6], signature,
                                          senderPubKey)
                    else:
                        result = r.verify(encryptedMessage, signature,
                                          senderPubKey)
                    if result:
                        log += ctime() + " Verify Successfully\n\n"
                        # father.father.logArea.insert(tk.END)
                        key = r.decryption(encryptedKey, priKey)
                        if decryptionType == 'caesar':
                            c = Caesar()
                            key = int(key)
                            message = c.decryption(encryptedMessage, key)
                            # pass
                        elif decryptionType == 'playfair':
                            p = Playfair(0)
                            p.generateMatrix(key)
                            message = p.decryption(encryptedMessage)
                            # pass
                        elif decryptionType == 'des':
                            d = des()
                            message = d.decrypt(key, encryptedMessage)
                        else:
                            d = des()
                            less = data['less']
                            # print("--------------------",key1, key2, encryptedMessage)
                            message = d.tdecrypt(key[2:10], key[14:22],
                                                 encryptedMessage)

                            message = message[0:-less]
                            # print("--------------------",message)
                            # pass
                    else:
                        # 输出不合格
                        pass
                else:
                    r = RSA(0)
                    if len(encryptedMessage) > 5:
                        result = r.verify(encryptedMessage[0:6], signature,
                                          senderPubKey)
                    else:
                        result = r.verify(encryptedMessage, signature,
                                          senderPubKey)
                    if result:
                        log += ctime() + " Verify Successfully\n\n"
                        if decryptionType == 'caesar':
                            key = self.father.father.selfInfo['key']
                            c = Caesar(key)
                            ct, secretKey = c.encryption('aaa')
                            message = c.decryption(encryptedMessage[0],
                                                   secretKey)
                            print('-----------pass')
                        elif decryptionType == 'playfair':
                            p = Playfair(0)
                            p.generateMatrix(key)
                            message = p.decryption(encryptedMessage)
                        elif decryptionType == 'des':
                            d = des()
                            message = d.decrypt(key, encryptedMessage)
                        else:
                            d = des()
                            less = data['less']

                            message = d.tdecrypt(key[2:10], key[14:22],
                                                 encryptedMessage)

                            message = message[0:-less]
                            # pass
                    else:
                        print('-----------not pass')
                        pass
                # print("i am here")
                textArea = self.father.textArea
                text = '['+ sender + ' -> ' + receiver + ' ' + \
                        ctime() + ']\n\t' + message + '\n'
                textArea.insert(tk.END, text)
                textArea.see(tk.END)

                logArea.insert(tk.END, log)
                logArea.see(tk.END)

                print("i am here")
Ejemplo n.º 19
0
            def send(self, data):
                receiverCertificate = data['certificate']

                inputEntry = self.father.inputEntry
                message = inputEntry.get()

                sender = self.father.father.username
                receiver = receiverCertificate['username']
                encryptionType = receiverCertificate['encryptionType']
                receiverPublicKey = receiverCertificate['publicKey']
                communicationType = receiverCertificate['communicationType']
                less = 0
                logArea = self.father.logArea
                log = ctime() + " Receive Certificate\n\n"

                if communicationType == 'rsa':
                    log += ctime() + " Communication Type: RSA\n\n"
                    # logArea.insert(tk.END, log + '\n\n')
                    # logArea.see(tk.END)
                    if encryptionType == 'caesar':
                        # encryption = Caesar()
                        c = Caesar()
                        cypherText, key = c.encryption(message)
                        r = RSA(0)
                        encryptedKey = r.encryption(key, receiverPublicKey)

                        # print(cypherText, self.father.father.selfInfo['priKey'])
                        if len(cypherText) > 5:
                            signature = r.sign(
                                cypherText[0:6],
                                self.father.father.selfInfo['priKey'])
                        else:
                            signature = r.sign(
                                cypherText,
                                self.father.father.selfInfo['priKey'])

                        data = {
                            'type': 'singleChat',
                            'encryptedMessage': cypherText,
                            'encryptedKey': encryptedKey,
                            'signature': signature,
                            'to': receiver,
                            'from': sender
                        }
                        log += ctime() + " Encryption Type: Caesar\n\n"
                        # logArea.insert(tk.END, log + '\n\n')
                        # logArea.see(tk.END)
                    elif encryptionType == 'playfair':
                        p = Playfair()
                        cypherText, key = p.encryption(message)
                        r = RSA(0)
                        encryptedKey = r.encryption(key, receiverPublicKey)

                        if len(cypherText) > 5:
                            signature = r.sign(
                                cypherText[0:6],
                                self.father.father.selfInfo['priKey'])
                        else:
                            signature = r.sign(
                                cypherText,
                                self.father.father.selfInfo['priKey'])

                        data = {
                            'type': 'singleChat',
                            'encryptedMessage': cypherText,
                            'encryptedKey': encryptedKey,
                            'signature': signature,
                            'to': receiver,
                            'from': sender
                        }
                        log += ctime() + " Encryption Type: Playfair\n\n"
                    elif encryptionType == 'des':
                        d = des()
                        key, temp = d.randomkey()

                        cypherText = d.encrypt(key, message)
                        # if message
                        r = RSA(0)
                        encryptedKey = r.encryption(key, receiverPublicKey)

                        if len(cypherText) > 5:
                            signature = r.sign(
                                cypherText[0:6],
                                self.father.father.selfInfo['priKey'])
                        else:
                            signature = r.sign(
                                cypherText,
                                self.father.father.selfInfo['priKey'])

                        data = {
                            'type': 'singleChat',
                            'encryptedMessage': cypherText,
                            'encryptedKey': encryptedKey,
                            'signature': signature,
                            'to': receiver,
                            'from': sender
                        }
                        log += ctime() + " Encryption Type: DES\n\n"
                        # pass
                    else:
                        d = des()
                        keys = d.randomkey()
                        # less = 0
                        if len(message) % 8 != 0:
                            less = 8 - (len(message) - len(message) // 8 * 8)
                            for i in range(less):
                                message += '0'
                        print(message)
                        # print("--------------------", keys[0], keys[1])
                        cypherText = d.tencrypt(keys[0], keys[1], message)
                        print("--------------------", keys[0], keys[1],
                              cypherText)
                        r = RSA(0)
                        encryptedKey = r.encryption(keys, receiverPublicKey)

                        if len(cypherText) > 5:
                            signature = r.sign(
                                cypherText[0:6],
                                self.father.father.selfInfo['priKey'])
                        else:
                            signature = r.sign(
                                cypherText,
                                self.father.father.selfInfo['priKey'])

                        data = {
                            'less': less,
                            'type': 'singleChat',
                            'encryptedMessage': cypherText,
                            'encryptedKey': encryptedKey,
                            'signature': signature,
                            'to': receiver,
                            'from': sender
                        }
                        log += ctime() + " Encryption Type: 3DES\n\n"
                else:
                    mA = data['mA']
                    key = pow(mA, self.father.father.selfInfo['secretB'],
                              self.father.father.selfInfo['pAndg'][0])
                    if encryptionType == 'caesar':
                        c = Caesar(key)
                        cypherText = c.encryption(message)

                        r = RSA(0)
                        encryptedKey = r.encryption(key, receiverPublicKey)

                        if len(cypherText) > 5:
                            signature = r.sign(
                                cypherText[0:6],
                                self.father.father.selfInfo['priKey'])
                        else:
                            signature = r.sign(
                                cypherText,
                                self.father.father.selfInfo['priKey'])

                        data = {
                            'type': 'singleChat',
                            'encryptedMessage': cypherText,
                            'encryptedKey': encryptedKey,
                            'signature': signature,
                            'to': receiver,
                            'from': sender
                        }
                        log += ctime() + " Encryption Type: Playfair\n\n"
                    elif encryptionType == 'playfair':
                        p = Playfair()
                        cypherText, key = p.encryption(message)
                        r = RSA(0)
                        encryptedKey = r.encryption(key, receiverPublicKey)

                        if len(cypherText) > 5:
                            signature = r.sign(
                                cypherText[0:6],
                                self.father.father.selfInfo['priKey'])
                        else:
                            signature = r.sign(
                                cypherText,
                                self.father.father.selfInfo['priKey'])

                        data = {
                            'type': 'singleChat',
                            'encryptedMessage': cypherText,
                            'encryptedKey': encryptedKey,
                            'signature': signature,
                            'to': receiver,
                            'from': sender
                        }
                        log += ctime() + " Encryption Type: Playfair\n\n"
                    elif encryptionType == 'des':
                        d = des()
                        key, temp = d.randomkey()

                        cypherText = d.encrypt(key, message)
                        # if message
                        r = RSA(0)
                        encryptedKey = r.encryption(key, receiverPublicKey)

                        if len(cypherText) > 5:
                            signature = r.sign(
                                cypherText[0:6],
                                self.father.father.selfInfo['priKey'])
                        else:
                            signature = r.sign(
                                cypherText,
                                self.father.father.selfInfo['priKey'])

                        data = {
                            'type': 'singleChat',
                            'encryptedMessage': cypherText,
                            'encryptedKey': encryptedKey,
                            'signature': signature,
                            'to': receiver,
                            'from': sender
                        }
                        log += ctime() + " Encryption Type: DES\n\n"
                        # pass
                    else:
                        d = des()
                        keys = d.randomkey()
                        # less = 0
                        if len(message) % 8 != 0:
                            less = 8 - (len(message) - len(message) // 8 * 8)
                            for i in range(less):
                                message += '0'
                        print(message)
                        # print("--------------------", keys[0], keys[1])
                        cypherText = d.tencrypt(keys[0], keys[1], message)
                        print("--------------------", keys[0], keys[1],
                              cypherText)
                        r = RSA(0)
                        encryptedKey = r.encryption(keys, receiverPublicKey)

                        if len(cypherText) > 5:
                            signature = r.sign(
                                cypherText[0:6],
                                self.father.father.selfInfo['priKey'])
                        else:
                            signature = r.sign(
                                cypherText,
                                self.father.father.selfInfo['priKey'])

                        data = {
                            'less': less,
                            'type': 'singleChat',
                            'encryptedMessage': cypherText,
                            'encryptedKey': encryptedKey,
                            'signature': signature,
                            'to': receiver,
                            'from': sender
                        }
                        log += ctime() + " Encryption Type: 3DES\n\n"
                    # pAndg = receiverCertificate['pAndg']
                    # self.father.father.selfInfo['secretB'] = getPrimeNum(20)
                    # mB = pow(pAndg[1], self.father.father.selfInfo['secretB'], pAndg[0])
                    # receiverCertificate['mB'] = mB
                    pass
                jData = json.dumps(data)
                self.socket.send(jData.encode())
                print('__send__' + jData)

                # update log
                log += ctime() + " Send Message Success\n\n"
                logArea.insert(tk.END, log)
                logArea.see(tk.END)

                # update text
                textArea = self.father.textArea
                if less != 0:
                    message = message[0:-less]
                text = '['+ sender + ' -> ' + receiver + ' ' + \
                        ctime() + ']\n\t' + message + '\n'
                textArea.insert(tk.END, text)
                textArea.see(tk.END)

                inputEntry.delete(0, tk.END)
import select
import errno
import sys
import base64
from Crypto.Cipher import AES
from Crypto import Random
from Crypto.Protocol.KDF import PBKDF2
import time
from time import perf_counter_ns
import os
import hashlib
from pydes import des

BLOCK_SIZE = 8
key = "secret_k"
d = des()
# First let us encrypt secret message
"""encrypted = encrypt("This is a secret message", password)
print(encrypted)

# Let us decrypt using our original password
decrypted = decrypt(encrypted, password)
print(bytes.decode(decrypted)) """
HEADER_LENGTH = 10

IP = "127.0.0.1"
port = 1234
my_username = input("Enter Username")
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((IP, port))
client_socket.setblocking(False)
Ejemplo n.º 21
0
def avalanche_test_on_message(FilePath, DesType, Key):

    try:
        file_object = open('./test_files/ls', 'rb')

    except FileNotFoundError:
        print("File Not Found. ")
        print("Exitting...")
        sys.exit()

    if DesType == 'des':
        d = pydes.des()

    elif DesType == 'des96':
        d = pydes96.des()

    print("Reading and encrypting original plaintext. ")
    # Original Plaintext
    plaintext_0 = file_object.read()
    ciphertext_0 = d.encrypt(Key, plaintext_0)
    #print(plaintext_0, ciphertext_0)
    file_object.close()

    print("Reading and encrypting plaintext with 1 bit difference")
    # Changing 1 bit.
    file_object = open('./test_files/ls_1', 'rb')
    plaintext_1 = file_object.read()
    # plaintext_1 = change_bits(plaintext_0, 1)
    if len(plaintext_1) % 8 != 0:
        x = len(plaintext_1) - len(plaintext_1) % 8
        plaintext_1 = plaintext_1[:x]
    #print(plaintext_1, ciphertext_1)
    ciphertext_1 = d.encrypt(Key, plaintext_1)
    file_object.close()

    print("Reading and Encrypting plaintext with 2 bits difference")
    # Changing 2 bits.
    file_object = open('./test_files/ls_2', 'rb')
    plaintext_2 = file_object.read()
    # plaintext_2 = change_bits(plaintext_0, 2)
    if len(plaintext_2) % 8 != 0:
        x = len(plaintext_2) - len(plaintext_2) % 8
        plaintext_2 = plaintext_2[:x]
    ciphertext_2 = d.encrypt(Key, plaintext_2)
    #print(plaintext_2, ciphertext_2)
    file_object.close()

    print("Reading and Encrypting plaintext with 3 bits difference")
    # Changing 3 bits.
    file_object = open('./test_files/ls_3', 'rb')
    plaintext_3 = file_object.read()
    # plaintext_3 = change_bits(plaintext_0, 3)
    if len(plaintext_3) % 8 != 0:
        x = len(plaintext_3) - len(plaintext_3) % 8
        plaintext_3 = plaintext_3[:x]
    ciphertext_3 = d.encrypt(Key, plaintext_3)
    #print(plaintext_3, ciphertext_3)
    file_object.close()

    # Find the hamming distance.
    hamming_distance_01 = find_hamming_distance(ciphertext_0, ciphertext_1)
    hamming_distance_02 = find_hamming_distance(ciphertext_0, ciphertext_2)
    hamming_distance_03 = find_hamming_distance(ciphertext_0, ciphertext_3)

    return hamming_distance_01, hamming_distance_02, hamming_distance_03
Ejemplo n.º 22
0
#!/usr/bin/env python
# -*- coding: utf8 -*-

# author: xiaofengfeng
# create: 2016-12-09 16:48:19

import pydes

if __name__ == '__main__':
    des = pydes.des('12345678',
                    pydes.CBC,
                    b"\0\0\0\0\0\0\0\0",
                    pad=None,
                    padmode=pydes.PAD_PKCS5)
    message = "qwertyuiopasdfghjklzxcvbnm"
    miwen = des.encrypt(message)
    print("encrypt: %r" % miwen)
    message = des.decrypt(miwen)
    print("decrypt: %r" % message)
Ejemplo n.º 23
0
plainlb3 = Label(window, text="PLAIN TEXT", font=("Arial", 14))
plainlb3.grid(column=0, row=3, sticky="E")
plaintxt = Entry(window, width=20)
plaintxt.grid(column=1, row=3)
KEYlb4 = Label(window, text="KEY", font=("Arial", 14))
KEYlb4.grid(column=2, row=3, sticky="E")
SecretKey = Entry(window, width=20)
SecretKey.grid(column=3, row=3)
lb5 = Label(window, text="CIPHER TEXT", font=("Arial", 14))
lb5.grid(column=0, row=4, sticky="E")
ciphertxt3 = Entry(window, width=20)
ciphertxt3.grid(column=1, row=4)
denctxt3 = Entry(window, width=20)
denctxt3.grid(column=3, row=4)

d = des()
algo = AES
mode = algo.MODE_ECB
ciphered = ""
iv = Random.new().read(algo.block_size)

description = {
    "AES (pycrypto)":
    '* Độ dài KEY 16 (AES-128), 24 (AES-192), 32 (AES-256)\n* Độ dài PLAINTEXT là bội của 16',
    'DES (pycrypto)':
    '* Độ dài KEY 16 hoặc 24\n* Độ dài PLAINTEXT là bội của 8',
    "DES (pydes)": '* Độ dài KEY >= 8\n* Độ dài PLAINTEXT là bội của 8'
}


def bin2txt(bin_val):