示例#1
0
    def authenticate_as_client(self, session_socket):
        # authenticates an external server connected via session_socket

        iv = self.receive_iv(session_socket)
        master_encrypter = Encrypter(self.master_key, iv)
        m = Messenger(session_socket, master_encrypter, self.continueHandler)

        client_challenge = genStr(CHALLENGE_LENGTH)
        client_challenge_hash = str(create_key(client_challenge))
        hash_len = len(client_challenge_hash)
        secretA = generateAorB()
        publicA = pow(g, secretA, p)
        m.send(client_challenge + str(publicA))

        response = m.recv()
        while not response:
            response = m.recv()

        if response[:hash_len] != client_challenge_hash:
            m.close()
            raise Exception('client could not authenticate')

        server_challenge_hash = str(create_key(response[hash_len:hash_len + CHALLENGE_LENGTH]))
        m.send(server_challenge_hash)
        public_b = int(response[hash_len + CHALLENGE_LENGTH:])
        self.log.info('g^b mod p is {}'.format(public_b))
        session_key = create_key(str(pow(public_b, secretA, p)))
        self.log.info('Session key generated by the client is {}'.format(session_key))

        session_encrypter = Encrypter(session_key, iv)
        session_m = Messenger(session_socket, session_encrypter, self.continueHandler)

        self._messenger = session_m
示例#2
0
    def _more_init(self):
        """
        Called as first function in run()
        """
        # Closing the lockfile descriptor.
        #
        # The multiprocessing library behaves differently on Windows and Unix:
        #   - on Windows it spawns a Python interpreter in a brand new process,
        #     which doesn't share any resource with the father process;
        #   - on Unix it forks. The child process inherits by default all
        #     file descriptors from the father, that is, open files, sockets,
        #     etc.
        # We want subprocesses not to inherit the lockfile descriptor in
        # order to avoid stale locks (see module: filerockclient.application).
        # It isn't possible to avoid Unix subprocesses to inherit descriptors,
        # so the only safe option is to explicitly close the lockfile in the
        # child. However, it must not be done on Windows, since multiprocessing
        # very likely uses the very same file descriptor for different
        # resources.
        # The developers of multiprocessing seem to be working on the fd
        # inheritance problem right in these days, see:
        #     http://bugs.python.org/issue8713
        if not sys.platform.startswith('win'):
            os.close(self.lockfile_fd)

#         self.warebox = Warebox(self.cfg)
        self.encrypter = Encrypter(self.warebox_path)
        self.decrypter = Decrypter(self.warebox_path)
示例#3
0
    def test_can_generate_two_key_encrypt_and_decrypt(self):
        e = Encrypter()

        e.save_key('myprivatekey.pem')
        e.save_public_key('mypublickey.pem')

        public_key = e.read_key('mypublickey.pem')
        private_key = e.read_key('myprivatekey.pem')

        message = 'un texte'
        ciphertext = e.encrypt(message, public_key)
        decripted = e.decrypt(ciphertext, private_key)

        self.assertEqual(decripted, message)
示例#4
0
    def authenticate_as_server(self, session_socket):
        # authenticates an external client connected via session_socket

        iv = self.generate_and_send_iv(session_socket) # the server should generate a random iv

        master_encrypter = Encrypter(self.master_key, iv)
        m_messenger = Messenger(session_socket, master_encrypter, self.continueHandler)

        secret_b = generateAorB()
        public_b = str(pow(g, secret_b, p))
        server_challenge = genStr(CHALLENGE_LENGTH)
        server_challenge_hash = str(create_key(server_challenge))

        response = m_messenger.recv()
        while not response:
            response = m_messenger.recv()

        client_challenge = response[:CHALLENGE_LENGTH]
        client_challenge_hash = str(create_key(client_challenge))
        public_a = response[CHALLENGE_LENGTH:]
        self.log.info('publicA is {}'.format(public_a))
        m_messenger.send(client_challenge_hash + server_challenge + public_b)
        session_key = create_key(str(pow(int(public_a), secret_b, p)))
        self.log.info('session key is {}'.format(session_key))

        response = m_messenger.recv()
        while not response:
            response = m_messenger.recv()

        if response != server_challenge_hash:
            self.log.warn('Client could not be authenticated. Session will be terminated!')
            m_messenger.close()
        else:
            print('Server Authentication Successful!!!')

        session_encrypter = Encrypter(session_key, iv)
        self._messenger = Messenger(session_socket, session_encrypter, self.continueHandler)
示例#5
0
def main():
    parser = argparse.ArgumentParser(prog='des-sim.py')
    parser.add_argument("-v", "--verbosity", action="count",
                        help="verbosity of output (v, vv)")
    args = parser.parse_args()

    if args.verbosity is not None:
        if args.verbosity == 1:
            log.setLevel(logging.INFO)
        elif args.verbosity >= 2:
            log.setLevel(logging.DEBUG)

    key = input('key > ')
    ks = KeyScheduler(key)

    plaintext = input('pt  > ')

    encrypter = Encrypter(ks)
    ciphertext = encrypter.encrypt(plaintext)

    print(ciphertext)
示例#6
0
文件: driver.py 项目: philmln/rsa
modeMsg = 'Select your preferred mode of encryption. Offered modes:\n' \
    '1) ECB, 2) OFB, 3) CTR, 4) CBC --> Either type the name or the number of the mode.'
modeSetMsg = 'Ciphering mode set to '
cipherReadyMsg = 'Your encrypted ciphertext is:\n'
decryptMsg = 'Would you like to decrypt the ciphertext? y/n'
decryptionDoneMsg = 'Your decrypted cipher and starting message is:\n'
loopMsg = 'Want to encrypt another message? y/n'
errorMsg = 'Please read the instructions carefully.'
byeMsg = 'Goodbye then!'

def signal_handler(sig, frame):
    print('\n' + byeMsg)
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
encrypter = Encrypter()
stop = False

while True:
    print(messageMsg)
    while True:
        message = input()
        if message != '':
            break
        print(errorMsg)

    print(modeMsg)
    while True:
        mode = input()
        if mode == '1' or mode == 'ECB':
            mode = 'ECB'
示例#7
0
    charCounter = CharCounter()
    while char:
        charCounter.add_char(char)
        char = file.read(1)
    # print("char count")
    # print(charCounter.get_char_counter())
    #init huffman tree
    huffmanTree = build_tree(charCounter.get_char_counter())
    # huffmanTree.preorder_print(huffmanTree.get_root())
    #get presentation from tree
    presentation = {}
    huffmanTree.get_tree_nodes(huffmanTree.get_root(), presentation)
    print("presentation")
    print(presentation)
    # #init encryp
    encrypter = Encrypter(presentation)
    print(encrypter.get_decrypt_char())
    doEncryption = raw_input("encrypt file y/n\n")
    if doEncryption == "y":
        encrypter.encrypt_file(file)
    # #init decrypter
    decrypter = Decrypter(encrypter.get_decrypt_char())
    doDecryption = raw_input("decrypt file y/n\n")
    if doDecryption == "y":
        decrypter.decrypt_file(file)
    #check if user want to quit or no
    quit = raw_input("exit y/n\n")
    if quit == "y":
        file.close()
        break
print("Thank you for using huffman tree")
 def setUp(self):
     # Arrange
     self._uut = Encrypter()