dh_client.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:matasano 作者: shainer 项目源码 文件源码
def DHExchangeClient(serverHost, port):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect((serverHost, port))

    # Usual parameters as recommended by NIST.
    pHex = ('ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e340'
            '4ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f40'
            '6b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8f'
            'd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff')
    p = int(pHex, 16)
    g = 2

    a = random.randint(0, p - 1)
    A = dh.modexp(g, a, p)
    B = 0

    # Sends the message in the predefined format.
    message = 'BEGIN\n%s\n%s\n%s\nEND' % (str(p), str(g), str(A))
    sock.send(message.encode())

    # Gets a similar message back from the server. See the comments
    # on dh_server which has a similar loop.
    exchange = b''
    while b'D' not in exchange:
        exchange += sock.recv(100)

    exchange = exchange.decode()
    pieces = exchange.split('\n')

    B = int(pieces[1])
    secret = dh.modexp(B, a, p)

    print('My secret is', str(secret))
    VerifyKey(sock, secret)

    sock.close()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号