示例#1
0
def loop_handler(connection, address, _pk, _sk):
    while True:
        try:
            res = ElGamal.decrypt(pickle.loads(connection.recv(4096)), pk,
                                  sk)  # デシリアライズ -> 復号
            for value in clients:
                if value[1][0] == address[0] and value[1][1] == address[1]:
                    print('Client({}, {}) : {}'.format(value[1][0],
                                                       value[1][1], res))
                else:
                    value[0].send('Client({}, {}) : {}'.format(
                        value[1][0], value[1][1], res).encode())
                    pass
        except Exception as e:
            print(e)
            break
示例#2
0
def test_ElGamal(num_bit, message):
    print("\n------------------------------------------------------")
    # Generate random prime numbers
    p = BlumBlumShub.generate_prime(num_bit)

    # Test generate_keypair which returns public key ( g, p, h) and the private key (g, p, x)
    public, private = ElGamal.generate_keypair(p)

    print("\n------------------------------------------------------")
    encrypted_msg = ElGamal.encrypt(public, message)

    print("\n------------------------------------------------------")
    decrypted_msg = ElGamal.decrypt(private, encrypted_msg)

    print("\n------------------------------------------------------")
    eve_decrypted_msg = ElGamal.eve(public, encrypted_msg)

    return decrypted_msg, eve_decrypted_msg
示例#3
0
    connection, address = socket.accept()
    print('Client connected: ', address)

    print('Key bits ?')
    bits = int(input('> '))
    print('OK, Your', str(bits)+'-bit keys are:')
    pk, sk = ElGamal.gen_key(bits=bits)
    print('public:', pk)  # 公開鍵
    print('secret:', sk)  # 秘密鍵
    line = str(pk[0])+' '+str(pk[1])+' '+str(pk[2])
    connection.send(line.encode("UTF-8"))  # 公開鍵を送る
    print('Given the client the public key ...')
    data = connection.recv(4096).decode()  # クライアントからの応答を確認
    print('Client:', data)

    # 無限ループ byeの入力でループを抜ける
    while True:

        # クライアントからデータを受信
        recvline = ElGamal.decrypt(pickle.loads(connection.recv(4096)), pk, sk)  # デシリアライズ -> 復号

        if recvline == 'bye':
            break
        else:
            print('Client:', recvline)

    # クローズ
    connection.close()
    socket.close()
    print('Server side closed.')
示例#4
0
def ElGamalDecryption(p, q, x, r, t):

    return ElGamal.decrypt(p, q, x, r, t)
示例#5
0
文件: main.py 项目: aslit/RSA-ElGamal
                    # If encryption algorithm is RSA
                    if type_encryption == "1":

                        result = [int(x.strip()) for x in private.split(',')]
                        private_key = (result[0], result[1])
                        # Decrypt with RSA Algorithm
                        RSA.decrypt(private_key, encrypted_msg)

                    # If encryption algorithm is El-Gamal
                    elif type_encryption == "2":

                        result = [int(x.strip()) for x in private.split(',')]

                        # Decrypt with El-Gamal Algorithm
                        ElGamal.decrypt((result[0], result[1], result[2]),
                                        encrypted_msg)

                # Otherwise, function 4 - Eavesdrop and decrypt the message
                elif function == "4":

                    # Get the encrypted message from user
                    encrypted_msg = input("Please enter encrypted message : ")

                    # Get the public key from user
                    public = input(
                        "Please enter the public key ((g, p, h) for El-Gamal / (e,n) for RSA ): "
                    )

                    print(
                        "\n------------------------------------------------------"
                    )