Exemplo n.º 1
0
def test_q4():
    print("-------------------------------------------")
    print("Testing Q4: DoubleX Cipher")
    print()

    print('Case 1:')
    ciphertext = utilities.file_to_text('q4A_ciphertext.txt')
    plaintext, key = final.q4A(ciphertext)
    print('key1 = ', key[0])
    print('key2 = ', key[1])
    print('plaintext[500:574]', plaintext[500:574])
    print()

    print('Case 2:')
    ciphertext = utilities.file_to_text('q4B_ciphertext.txt')
    plaintext, key = final.q4B(ciphertext)
    print('key1 = ', key[0])
    print('key2 = ', key[1])
    print('plaintext[500:576]', plaintext[500:576])
    print()

    print('Case 3:')
    ciphertext = utilities.file_to_text('q4C_ciphertext.txt')
    plaintext, key = final.q4C(ciphertext)
    print('key1 = ', key[0])
    print('key2 = ', key[1])
    print('plaintext[499:576]', plaintext[499:576])
    print()

    print("-------------------------------------------")
    return
Exemplo n.º 2
0
Arquivo: testing.py Projeto: PJYGit/MT
def test_q4(file1, file2):
    print('Testing encryption over sample file:')
    plaintext = utilities.file_to_text('plaintext_xcrypt_sample.txt')
    ciphertext = utilities.file_to_text('ciphertext_xcrypt_sample.txt')
    key = 82
    ciphertext2 = solution.e_xcrypt(plaintext, key)
    if ciphertext == ciphertext2:
        print('Encryption Successful')
    else:
        print('Encryption failed')
    plaintext2 = solution.d_xcrypt(ciphertext2, key)
    if plaintext == plaintext2:
        print('Decryption Successful')
    else:
        print('Decryption failed')
    print()

    print('Testing decryption over sample file:')
    plaintext2 = solution.d_xcrypt(ciphertext2, key)
    if plaintext == plaintext2:
        print('Decryption Successful')
    else:
        print('Decryption failed')
    print()

    plaintext = ''
    ciphertext = ''
    ciphertext2 = ''
    plain4 = file1
    cipher4 = file2
    key = 0
    ciphertext = utilities.file_to_text(cipher4)
    print('Cryptanalysis of {}:'.format(cipher4))
    key, plaintext = solution.cryptanalysis_xcrypt(ciphertext)
    print('Key found: ', key)
    print()
    print('Plaintext:')
    print(plaintext[:150])
    print()
    print('Cryptanalysis Successful? ', end='')
    ciphertext2 = solution.e_xcrypt(plaintext, key)
    if ciphertext == ciphertext2:
        print('Yes')
    else:
        print('No')
    print()

    solution.comments_q4()
    return
Exemplo n.º 3
0
Arquivo: testing.py Projeto: PJYGit/MT
def test_q2(file1, file2):
    print('Testing Encryption/decryption against sample file:')
    plaintext = utilities.file_to_text('plaintext_subcipher_sample.txt')
    ciphertext = utilities.file_to_text('ciphertext_subcipher_sample.txt')
    key = utilities.adjust_key("""poejiqsrbltxwaznfcdhmvgkuy:'" !.?,-#;""")
    ciphertext2 = solution.e_substitution(plaintext, key)
    if ciphertext == ciphertext2:
        print('\tEncryption Successful')
    else:
        print('\tEncryption failed')
    plaintext2 = solution.d_substitution(ciphertext2, key)
    if plaintext == plaintext2:
        print('\tDecryption Successful')
    else:
        print('\tDecryption failed')
    print()

    # this is given you do not need to do anything for it
    print('Cryptanalysis for Sample File:')
    key = '''poejiqsrbltxwaznfcdhmvgkuy:'" !.?,-#;'''
    print('found key = ', key)
    print()

    # Cryptanalysis of your file
    plaintext = ''
    ciphertext = ''
    ciphertext2 = ''
    plain1 = file1
    cipher1 = file2
    key = 0
    ciphertext = utilities.file_to_text(cipher1)
    print('Cryptanalysis of {}:'.format(cipher1))
    key, plaintext = solution.cryptanalysis_substitution(ciphertext)
    print('Key found: ', utilities.adjust_key(key))
    print()
    print('Plaintext:')
    print(plaintext[:150])
    print()
    print('Verifying cryptanalysis results: ', end='')
    ciphertext2 = solution.e_substitution(plaintext, key)
    if ciphertext == ciphertext2:
        print('OK')
    else:
        print('Something is not right!')
    print()

    solution.comments_q2()
    return
def task4():
    print('{}'.format('-' * 40))
    print("Start of Task 4: Columnar Transposition Cipher")
    print()

    print('----------- Testing get_keyOrder_columnarTrans:')
    keys = [
        '', 'r', '?', 'RAINY?', 'dad', 'face', 'Face', 'apple', 'good day',
        'German'
    ]
    for key in keys:
        print('Key order for {} ='.format(key), end=' ')
        keyOrder = A2_solution._get_order_ct(key)
        print(keyOrder)
    print()

    print('Testing Encryption/Decryption:')
    keys = ['', 'German', 'Truth Seeker']
    plaintext = utilities.file_to_text('plaintext3.txt')
    plaintexts = ['ABC', 'DEFENDEASTERNWALLOFTHECASTLE', plaintext]
    for i in range(len(keys)):
        print('key = ', keys[i])
        print('plaintext  =\n{}'.format(plaintexts[i]))
        ciphertext = A2_solution.e_ct(plaintexts[i], keys[i])
        print('ciphertext =\n{}'.format(ciphertext))
        plaintext2 = A2_solution.d_ct(ciphertext, keys[i])
        print('plaintext2 =\n{}'.format(plaintext2))
        print()

    print('End of Task 4: Columnar Transposition Cipher Testing')
    print('{}'.format('-' * 40))
    print()
    return
Exemplo n.º 5
0
Arquivo: testing.py Projeto: PJYGit/MT
def test_q1(file1, file2):
    print('Testing Encryption/decryption against sample file:')
    plaintext = utilities.file_to_text('plaintext_vigenere_sample.txt')
    ciphertext = utilities.file_to_text('ciphertext_vigenere_sample.txt')
    key = 'disposition'
    ciphertext2 = solution.e_vigenere(plaintext, key)
    if ciphertext == ciphertext2:
        print('\tEncryption Successful')
    else:
        print('\tEncryption failed')
    plaintext2 = solution.d_vigenere(ciphertext2, key)
    if plaintext == plaintext2:
        print('\tDecryption Successful')
    else:
        print('\tDecryption failed')
    print()
    print('Cryptanalysis for Sample File:')
    key, plaintext = solution.cryptanalysis_vigenere(ciphertext)
    print('found key = ', key)
    print()

    plaintext = ''
    ciphertext = ''
    ciphertext2 = ''
    plain1 = file1
    cipher1 = file2
    key = 0
    ciphertext = utilities.file_to_text(cipher1)
    print('Cryptanalysis of {}:'.format(cipher1))
    key, plaintext = solution.cryptanalysis_vigenere(ciphertext)
    print('Key found: ', key)
    print()
    print('Plaintext:')
    print(plaintext[:150])
    print()
    print('Verifying cryptanalysis results: ', end='')
    ciphertext2 = solution.e_vigenere(plaintext, key)
    if ciphertext == ciphertext2:
        print('OK')
    else:
        print('Something is not right!')
    print()

    solution.comments_q1()
    return
Exemplo n.º 6
0
Arquivo: testing.py Projeto: PJYGit/MT
def test_q3(file1, file2):
    print('Testing Encryption/decryption against sample file:')
    plaintext = utilities.file_to_text('plaintext_xshift_sample.txt')
    ciphertext = utilities.file_to_text('ciphertext_xshift_sample.txt')
    key = ('ABCDEFGHIJKLMNOPQRSTUVWXYZzyxwvutsrqponmlkjihgfedcba', 30)
    ciphertext2 = solution.e_xshift(plaintext, key)
    if ciphertext == ciphertext2:
        print('\tEncryption Successful')
    else:
        print('\tEncryption failed')
    plaintext2 = solution.d_xshift(ciphertext2, key)
    if plaintext == plaintext2:
        print('\tDecryption Successful')
    else:
        print('\tDecryption failed')
    print()
    print('Cryptanalysis for Sample File:')
    key, plaintext = solution.cryptanalysis_xshift(ciphertext)
    print('found key = ', key)
    print()

    plaintext = ''
    ciphertext = ''
    ciphertext2 = ''
    plain4 = file1
    cipher4 = file2
    key = 0
    ciphertext = utilities.file_to_text(cipher4)
    print('Cryptanalysis of {}:'.format(cipher4))
    key, plaintext = solution.cryptanalysis_xshift(ciphertext)
    print('Key found: ', key)
    print()
    print('Plaintext:')
    print(plaintext[:500])
    print()
    print('Cryptanalysis Successful? ', end='')
    ciphertext2 = solution.e_xshift(plaintext, (key[0], int(key[1])))
    if ciphertext == ciphertext2:
        print('Yes')
    else:
        print('No')
    print()

    solution.comments_q3()
    return
Exemplo n.º 7
0
def task3():
    print('{}'.format('-' * 40))
    print("Start of Task 3: Scytale Cipher Testing")
    print()

    print('--------- Testing Encryption:')
    for i in range(3, 7):
        plainfile = 'plaintext1' + str(i - 2) + '.txt'
        plaintext = utilities.file_to_text(plainfile)
        ciphertext = A1_solution.e_scytale(plaintext, i)
        print('key = {}'.format(i))
        print('ciphertext: ')
        print(ciphertext)
        utilities.text_to_file(ciphertext, 'ciphertext3' + str(i - 2) + '.txt')
        print()

    print('-------- Testing Decryption: ')
    for i in range(3, 7):
        ciphertext = utilities.file_to_text('ciphertext3' + str(i - 2) +
                                            '.txt')
        plaintext = A1_solution.d_scytale(ciphertext, i)
        print('key = {}'.format(i))
        print('plaintext: ')
        print(plaintext)
        print()

    print('-------- Testing Cryptanalysis: ')
    for i in range(5, 7):
        file = 'ciphertext3' + str(i) + '.txt'
        ciphertext = utilities.file_to_text(file)
        key, plaintext = A1_solution.cryptanalysis_scytale(ciphertext)
        print('key = {}'.format(key), end=' , ')
        if plaintext == utilities.file_to_text('plaintext31.txt'):
            print('Plaintext verified')
        else:
            print('Plaintext mismatch')
    print()

    print('End of Task 3: Scytale Cipher Testing')
    print('{}'.format('-' * 40))
    print()
    return
Exemplo n.º 8
0
def task2():
    print('{}'.format('-' * 40))
    print("Start of Task 2: Extended Atbash Testing")
    print()

    print('-------- Testing Encryption: ')
    plaintext = utilities.file_to_text('plaintext14.txt')
    for i in range(5):
        ciphertext = A1_solution.e_eatbash(plaintext, i + 5)
        print('key = {}'.format(i))
        print('ciphertext: ')
        print(ciphertext)
        utilities.text_to_file(ciphertext, 'ciphertext2' + str(i + 1) + '.txt')
        print()

    print('-------- Testing Decryption: ')
    for i in range(5):
        ciphertext = utilities.file_to_text('ciphertext2' + str(i + 1) +
                                            '.txt')
        plaintext = A1_solution.d_eatbash(ciphertext, i)
        print('key = {}'.format(i))
        print('plaintext: ')
        print(plaintext)
        print()

    print('-------- Testing Cryptanalysis: ')
    for i in range(5):
        file = 'ciphertext2' + str(i + 1) + '.txt'
        ciphertext = utilities.file_to_text(file)
        key, plaintext = A1_solution.cryptanalysis_eatbash(ciphertext)
        print('key = {}'.format(key), end=' , ')
        if plaintext == utilities.file_to_text('plaintext14.txt'):
            print('Plaintext verified')
        else:
            print('Plaintext mismatch')

    print()
    print('End of Task 2: Extended Atbash Testing')
    print('{}'.format('-' * 40))
    print()
    return
Exemplo n.º 9
0
def part1():
    inputText = utilities.file_to_text('Day6/input.txt')

    groups = inputText.split('\n\n')

    totalSum = 0
    for group in groups:
        customsDict = {chr(ord('a') + i): 0 for i in range(26)}

        for char in group:
            if char in customsDict:
                customsDict[char] = 1

        totalSum += sum(customsDict.values())

    print(totalSum)
Exemplo n.º 10
0
def part2():
    inputText = utilities.file_to_text('Day6/input.txt')

    groups = inputText.split('\n\n')

    totalSum = 0
    for group in groups:
        customsDict = {chr(ord('a') + i): 0 for i in range(26)}
        lines = group.split('\n')
        for line in lines:
            for char in line:
                if char in customsDict:
                    customsDict[char] += 1

        for key in customsDict:
            if type(lines) == list:
                if customsDict[key] == len(lines):
                    totalSum += 1
            else:
                if customsDict[key] == 1:
                    totalSum += 1

    print(totalSum)
def task2():
    print('{}'.format('-' * 40))
    print("Start of Task 2: Block Rotation Cipher")
    print()

    print('Testing adjust Key:')
    print('({},{})\t--> '.format(4, 3.5), end='')
    print('{}'.format(A2_solution._adjust_key_block_rotate((4, 3.5))))
    print('{}\t--> '.format([4, 5]), end='')
    print('{}'.format(A2_solution._adjust_key_block_rotate([4, 5])))
    print('{}\t--> '.format(10), end='')
    print('{}'.format(A2_solution._adjust_key_block_rotate(10)))
    print('({},{})\t--> '.format(-2, 1), end='')
    print('{}'.format(A2_solution._adjust_key_block_rotate((-2, 1))))
    print('({},{})\t--> '.format(5, 7), end='')
    print('{}'.format(A2_solution._adjust_key_block_rotate((5, 7))))
    print('({},{})\t--> '.format(3, 11), end='')
    print('{}'.format(A2_solution._adjust_key_block_rotate((3, 11))))
    print('({},{})\t--> '.format(7, -6), end='')
    print('{}'.format(A2_solution._adjust_key_block_rotate((7, -6))))
    print('({},{})\t--> '.format(11, 4), end='')
    print('{}'.format(A2_solution._adjust_key_block_rotate((11, 4))))
    print()

    print('Testing encryption and decryption:')
    key = (4, 3)
    print('Key = ', key)
    plaintext = utilities.get_base('lower')
    print('plaintext = ', end=' ')
    print(plaintext)
    ciphertext = A2_solution.e_block_rotate(plaintext, key)
    print('After encryption:', end=' ')
    print(ciphertext)
    print('After Decryption:', end=' ')
    recovered = A2_solution.d_block_rotate(ciphertext, key)
    print(recovered)
    print()

    key = (10, 6)
    print('Key = ', key)
    plaintext = 'The internet, our greatest tool of emancipation, has been transformed into '
    plaintext += 'the most dangerous facilitator of totalitarianism we have ever seen'
    print('plaintext = ')
    print(plaintext)
    ciphertext = A2_solution.e_block_rotate(plaintext, key)
    print('After encryption:')
    print(ciphertext)
    print('After Decryption:')
    recovered = A2_solution.d_block_rotate(ciphertext, key)
    print(recovered)
    print()

    key = (8, 5)
    print('Key = ', key)
    plaintext = 'One must acknowledge with cryptography '
    plaintext += 'no amount of violence will ever solve a math problem.'
    print('plaintext = ')
    print(plaintext)
    ciphertext = A2_solution.e_block_rotate(plaintext, key)
    print('After encryption:')
    print(ciphertext)
    print('After Decryption:')
    recovered = A2_solution.d_block_rotate(ciphertext, key)
    print(recovered)
    print()

    print('Testing Cryptanalysis: ')
    base_plaintext = utilities.file_to_text('plaintext1.txt')
    arguments = [[2, 15, 0], [0, 0, 0], [10, 0, 0], [0, 10, 0], [12, 12, 0]]
    for i in range(len(arguments)):
        filename = 'ciphertext' + str(i + 1) + '.txt'
        ciphertext = utilities.file_to_text(filename)
        key, plaintext = A2_solution.cryptanalysis_block_rotate(
            ciphertext, arguments[i])
        if plaintext == '' and key == '':
            print('Cryptanalysis failed')
        else:
            print('key = {}'.format(key))
            if plaintext == base_plaintext:
                print('plaintext validated')
            else:
                print('plaintext validation failed')
        print()

    print('End of Task 2: Block Rotation Testing')
    print('{}'.format('-' * 40))
    print()
    return
def task3():
    print('{}'.format('-' * 40))
    print("Start of Task 3: Playfair Square Cipher")
    print()

    print('--------- Testing _format_playfair:')
    plaintexts = [
        'Light', 'lesson', 'door', 'floor', 'window', 'Widow',
        'Are you happy?', 'What?! Angry!!', 'Wow!! That is wonderful!'
    ]
    for i in range(len(plaintexts)):
        print(plaintexts[i], '\t', A2_solution._format_playfair(plaintexts[i]))
    print()

    print('-------- Testing _restore_word_playfair: ')
    dict_list = utilities.load_dictionary('engmix.txt')
    words = [
        'a', 'road', 'ox', 'fox', 'anxious', 'doxr', 'exl', 'afxix', 'excesx',
        'foxtbalx', 'Football', 'England'
    ]
    for word in words:
        print('{:8s} --> {:15s}'.format(
            word, A2_solution._restore_word_playfair(word, dict_list)),
              end='')
        print('{} --> {}'.format(
            word.upper(),
            A2_solution._restore_word_playfair(word.upper(), dict_list)))
    print()

    print('--------- Testing _restore_playfair:')
    cases = [
        'Lesxon Lightx', 'vxindovx floxrx', 'VXidovv floxr',
        'Is it why or what?'
    ]
    for case in cases:
        print('Before: {}'.format(case))
        print('After : {}'.format(A2_solution._restore_playfair(case)))
        print()

    print('-------- Testing Encryption/Decryption: ')
    key = utilities.get_playfair_square()
    for i in range(len(plaintexts)):
        print('plaintext  = {}'.format(plaintexts[i]))
        ciphertext = A2_solution.e_playfair(plaintexts[i], key)
        print('ciphertext = {}'.format(ciphertext))
        plaintext = A2_solution.d_playfair(ciphertext, key)
        print('plaintext  = {}'.format(plaintext))
        print()

    print('------------ Testing encrypt/decrypt over files:')
    plaintext = utilities.file_to_text('plaintext2.txt')
    ciphertext = A2_solution.e_playfair(plaintext, key)
    print()
    if ciphertext == utilities.file_to_text('ciphertext6.txt'):
        print('Encryption validated')
    else:
        print('Encryption validation failed')
    plaintext2 = A2_solution.d_playfair(ciphertext, key)
    if plaintext == plaintext2:
        print('Decryption validated')
    else:
        print('Decryption validation failed')
    print()

    print('End of Task 3: Playfair Cipher Testing')
    print('{}'.format('-' * 40))
    print()
    return
Exemplo n.º 13
0
def task1():
    print('{}'.format('-' * 40))
    print("Start of Task 1: Plaintext Detection Testing")
    print()

    dict_list = A1_solution.load_dictionary("engmix.txt")
    print('Testing load_dictionary:')
    print("Number of words starting with b = ", len(dict_list[1]))
    print("10th word starting with P = ", dict_list[15][9])
    print("100th word starting with j = ", dict_list[9][99])
    print("Last word starting with s = ", dict_list[18][-1])
    print()

    print("Testing text_to_words:")
    plaintext1 = utilities.file_to_text("plaintext11.txt")
    word_list = A1_solution.text_to_words(plaintext1)
    print("plaintext1:", word_list)

    plaintext2 = utilities.file_to_text("plaintext12.txt")
    word_list = A1_solution.text_to_words(plaintext2)
    print("plaintext2:")
    print(word_list)

    plaintext3 = utilities.file_to_text("plaintext13.txt")
    word_list = A1_solution.text_to_words(plaintext3)
    print("plaintext3:")
    print(word_list)
    print()

    print("Testing analyze_text:")
    result = A1_solution.analyze_text(plaintext2, "engmix.txt")
    print("Analyzing plaintext2:", result)
    result = A1_solution.analyze_text(plaintext3, "engmix.txt")
    print("Analyzing plaintext3:", result)
    plaintext4 = utilities.file_to_text("plaintext14.txt")
    result = A1_solution.analyze_text(plaintext4, "engmix.txt")
    print("Analyzing plaintext4:", result)
    ciphertext1 = utilities.file_to_text("ciphertext11.txt")
    result = A1_solution.analyze_text(ciphertext1, "engmix.txt")
    print("Analyzing ciphertext1:", result)
    print()

    print("Testing is_plaintext:")
    result = A1_solution.is_plaintext(plaintext2, "engmix.txt", 0.85)
    print("plaintext2 (0.85):", result)
    result = A1_solution.is_plaintext(plaintext3, "engmix.txt", 1.1)
    print("plaintext3 (1.1):", result)
    result = A1_solution.is_plaintext(plaintext3, "engmix.txt", 0.96)
    print("plaintext3: (0.96)", result)
    result = A1_solution.is_plaintext(plaintext4, "engmix.txt", 0.91)
    print("plaintext4: (0.91)", result)
    result = A1_solution.is_plaintext(plaintext4, "engmix.txt", 0.82)
    print("plaintext4: (0.82)", result)
    result = A1_solution.is_plaintext(ciphertext1, "engmix.txt", 0.7)
    print("ciphertext1: (0.7)", result)
    print()

    print('End of Task 1: Plaintext Detection Testing')
    print('{}'.format('-' * 40))
    print()
    return
Exemplo n.º 14
0
def task4():
    print('{}'.format('-' * 40))
    print("Start of Task 4: Polybius Square Cipher Testing")
    print()

    print('-------- Testing get_polybius_square:')
    print('start = "A", size = 5: {}'.format(
        A1_solution.get_polybius_square('A', 5)))
    print('start = "R", size = 6: {}'.format(
        A1_solution.get_polybius_square('R', 6)))
    print('start = "@", size = 7: {}'.format(
        A1_solution.get_polybius_square('@', 7)))
    print('start = "A", size = 5: {}'.format(
        A1_solution.get_polybius_square('A', 5)))
    print('start = " ", size = 8: {}'.format(
        A1_solution.get_polybius_square(' ', 8)))
    print('start = "+", size = 9: {}'.format(
        A1_solution.get_polybius_square('+', 9)))
    print('start = " ", size = 10: {}'.format(
        A1_solution.get_polybius_square(' ', 10)))
    print()

    print('-------- Testing Encryption:')

    start = ['D', 'A', ' ', '+', 'B']
    for i in range(1, 6):
        plainfile = 'plaintext4' + str(i) + '.txt'
        plaintext = utilities.file_to_text(plainfile)
        key = (start[i - 1], i + 5)
        ciphertext = A1_solution.e_polybius(plaintext, key)
        print('key = {}'.format(key))
        print('ciphertext: ')
        print(ciphertext)
        utilities.text_to_file(ciphertext, 'ciphertext4' + str(i) + '.txt')
        print()

    print('-------- Testing Decryption: ')
    for i in range(1, 6):
        ciphertext = utilities.file_to_text('ciphertext4' + str(i) + '.txt')
        key = (start[i - 1], i + 5)
        plaintext = A1_solution.d_polybius(ciphertext, key)
        print('key = {}'.format(key))
        print('plaintext: ')
        print(plaintext)
        print()

    print('-------- Testing Cryptanalysis: ')
    size = [6, 9, 8]
    for i in range(6, 9):
        file = 'ciphertext4' + str(i) + '.txt'
        ciphertext = utilities.file_to_text(file)
        key, plaintext = A1_solution.cryptanalysis_polybius(
            ciphertext, size[i - 6])
        print('key = {} --> {}'.format(
            key, A1_solution.get_polybius_square(key[0], key[1])),
              end=' , ')
        if plaintext == utilities.file_to_text('plaintext46.txt'):
            print('Plaintext verified')
        else:
            print('Plaintext mismatch')
    print()

    print('End of Task 4: Polybius Square Cipher Testing')
    print('{}'.format('-' * 40))
    print()
    return