Skip to content
Liesware edited this page Jan 28, 2019 · 2 revisions

Diffie-Hellman video

DH

spec

Description: Public-key cryptosystem

Problem: Discrete logarithm problem

Uses: Key exchange

How to ???

#!/usr/bin/env python

import socket
import json
import os,binascii

def sending(message):
	ip = '127.0.0.1'
	port = 6613
	BUFFER_SIZE = 65536
	s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
	s.connect((ip, port))
	s.send(message)
	data = s.recv(BUFFER_SIZE)
	s.close()
	return data

def dh(data_js):
	req=json.loads(data_js)
	print "Send gen parameters (A): \n " + json.dumps(req) +"\n"
	data_js_n=sending(json.dumps(req))
	answ=json.loads(data_js_n)
	print "Recived gen parameters donde (A): \n" + (json.dumps(answ)) +"\n\n\n"
	data_js_n=sending(json.dumps(req))
	print "Send gen parameters (B): \n " + json.dumps(req) +"\n"
	answ_1=json.loads(data_js_n)
	print "Recived gen parameters donde (B): \n" + (json.dumps(answ_1)) +"\n\n\n"
	gen='{ "version":1 , "algorithm":"DH","family": "", "privkey":"","sharedpub":"", "operation":"a_rfc"}'
	req=json.loads(gen)
	req["family"]=answ["family"]
	req["privkey"]=answ["privkey"]
	req["sharedpub"]=answ_1["pubkey"]
	print "Send agreetment (A): \n " + json.dumps(req) +"\n"
	data_js_n=sending(json.dumps(req))
	answ_2=json.loads(data_js_n)
	print "Recived agreetment donde (A): \n" + (json.dumps(answ_2)) +"\n\n\n"
	req["privkey"]=answ_1["privkey"]
	req["sharedpub"]=answ["pubkey"]
	print "Send agreetment (B): \n " + json.dumps(req) +"\n"
	data_js_n=sending(json.dumps(req))
	answ_3=json.loads(data_js_n)
	print "Recived agreetment donde (B): \n" + (json.dumps(answ_3)) +"\n\n\n"


dh_gen='{ "version": 1 , "algorithm":"DH", "family": "modp256", "operation":"gen_rfc"}'
dh(dh_gen)

In this example we generate keys for A and B, and we make a key exchange between A and B.

On "family" parameneter can be {"modp256","modp160","modp224"}


Json to gen

{ "version": 1 , "algorithm":"DH", "family": "mod flavor", "operation":"gen_rfc"}

Json to key agreetment

{ "version":1 , "algorithm":"DH","family": "mod flavor", "privkey":" your hex privkey",
"sharedpub":"your partnert hex pubkey", "operation":"a_rfc"}
You can’t perform that action at this time.