-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDiffieHellmanAuto.m
73 lines (62 loc) · 2.13 KB
/
DiffieHellmanAuto.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
B=0;
N=0;
clear;
while true
clc; %Clear command window
disp('Diffie Hellman Key Exchange');
disp('-----------------------------------------');
disp('Defina os parâmetros globais da comunicação ');
disp('------------------------------------------- ');
%'Key = (p^private1 mod N)^private2 mod N'
% Definindo os parâmetros globais da comunicação
B = randi([1 1000000-1]);
disp(['Gerando um Nr primo pequeno (B): ' num2str(B)]);
if(isprime(B) ==1)
break;
end
end
while true
clc; %Clear command window
disp('Diffie Hellman Key Exchange');
disp('-----------------------------------------');
disp('Defina os parâmetros globais da comunicação ');
disp('------------------------------------------- ');
%'Key = (p^private1 mod N)^private2 mod N'
% Definindo os parâmetros globais da comunicação
disp(['Gerando um Nr primo pequeno (B): ' num2str(B)]);
N = randi([1 1000000000-1]);
disp(['Gerando um Nr primo grande (N): ' num2str(N)]);
if(isprime(N)==1)
break;
end
end
disp('------------------------------------------- ');
disp('Gerando chaves assimétrica');
BobPrivKey = randi([1 N-1]);
disp(['Escolha um numero secreto (chave privada) para BOB: ' num2str(BobPrivKey)]);
BobPublicKey = B;
for i = 2:BobPrivKey
BobPublicKey = mod((B*BobPublicKey),N);
end
disp(['------------> Chave pública de BOB (envie para Eva): ' num2str(BobPublicKey)]);
EvaPrivKey = randi([1 N-1]);
disp(['Escolha um numero secreto (chave privada) para EVA: ' num2str(EvaPrivKey)]);
EvaPublicKey = B;
for i = 2:EvaPrivKey
EvaPublicKey = mod((B*EvaPublicKey),N);
end
disp(['------------> Chave pública de EVA (envie para Bob): ' num2str(EvaPublicKey)]);
disp('------------------------------------------- ');
disp('Bob calculando a chave de comunicação:');
KeyComBob = EvaPublicKey;
for i = 2:BobPrivKey
KeyComBob = mod((B*KeyComBob),N);
end
disp(['-----------> Chave: ' num2str(KeyComBob)]);
disp('------------------------------------------- ');
disp('Eva calculando a chave de comunicação');
KeyComEva = BobPublicKey;
for i = 2:EvaPrivKey;
KeyComEva = mod((B*KeyComEva),N);
end
disp(['-----------> Chave: ' num2str(KeyComEva)]);