Added
Signed-off-by: Marcin Woźniak <y0rune@aol.com>
This commit is contained in:
parent
4e5449bcda
commit
5821fdf523
103
module.rb
103
module.rb
@ -418,26 +418,6 @@ end
|
|||||||
|
|
||||||
#### MODULE 3 ####
|
#### MODULE 3 ####
|
||||||
|
|
||||||
#################################################################################
|
|
||||||
# Funkcja wielokrotnoscPunktu(a,b,p,n,x,y)
|
|
||||||
#
|
|
||||||
# Oblicza wielokrotność punktów np.
|
|
||||||
# 2n = n + n
|
|
||||||
#################################################################################
|
|
||||||
def wielokrotnoscPunktu(a,b,p,n,x,y)
|
|
||||||
punktQ = [x,y]
|
|
||||||
punktR = ["e","e"]
|
|
||||||
|
|
||||||
while n > 0
|
|
||||||
if n % 2 == 1
|
|
||||||
punktR = sumaPunktow(a,b,p,punktR[0],punktR[1],punktQ[0],punktQ[1])
|
|
||||||
n = n - 1
|
|
||||||
end
|
|
||||||
punktQ = sumaPunktow(a,b,p,punktQ[0],punktQ[1],punktQ[0],punktQ[1])
|
|
||||||
n = n / 2
|
|
||||||
end
|
|
||||||
return punktR
|
|
||||||
end
|
|
||||||
|
|
||||||
#################################################################################
|
#################################################################################
|
||||||
# Funkcje mysqrt(n)
|
# Funkcje mysqrt(n)
|
||||||
@ -469,6 +449,7 @@ def liczenieOrd(p)
|
|||||||
end
|
end
|
||||||
|
|
||||||
#################################################################################
|
#################################################################################
|
||||||
|
# Zadanie 1
|
||||||
# Funkcja generowanieKluczyElGamalKrzywaEliptyczna(k)
|
# Funkcja generowanieKluczyElGamalKrzywaEliptyczna(k)
|
||||||
#
|
#
|
||||||
# Generatoruje klucz publiczny
|
# Generatoruje klucz publiczny
|
||||||
@ -501,10 +482,34 @@ def generowanieKluczyElGamalKrzywaEliptyczna(k)
|
|||||||
end
|
end
|
||||||
|
|
||||||
#################################################################################
|
#################################################################################
|
||||||
|
# Zadanie 2
|
||||||
|
# Funkcja wielokrotnoscPunktu(a,b,p,n,x,y)
|
||||||
|
#
|
||||||
|
# Oblicza wielokrotność punktów np.
|
||||||
|
# 2n = n + n
|
||||||
|
#################################################################################
|
||||||
|
def wielokrotnoscPunktu(a,b,p,n,x,y)
|
||||||
|
punktQ = [x,y]
|
||||||
|
punktR = ["e","e"]
|
||||||
|
|
||||||
|
while n > 0
|
||||||
|
if n % 2 == 1
|
||||||
|
punktR = sumaPunktow(a,b,p,punktR[0],punktR[1],punktQ[0],punktQ[1])
|
||||||
|
n = n - 1
|
||||||
|
end
|
||||||
|
punktQ = sumaPunktow(a,b,p,punktQ[0],punktQ[1],punktQ[0],punktQ[1])
|
||||||
|
n = n / 2
|
||||||
|
end
|
||||||
|
return punktR
|
||||||
|
end
|
||||||
|
|
||||||
|
#################################################################################
|
||||||
|
# Zadanie 3
|
||||||
# Funkcja algorytmKodowania(a,b,p,m,n,u)
|
# Funkcja algorytmKodowania(a,b,p,m,n,u)
|
||||||
#
|
#
|
||||||
#################################################################################
|
#################################################################################
|
||||||
def algorytmKodowania(a,b,p,m,n,u)
|
def algorytmKodowania(a,b,p,m,u)
|
||||||
|
n = m + SecureRandom.random_number(0..1000000)
|
||||||
if (m < n) && (p > n*u)
|
if (m < n) && (p > n*u)
|
||||||
for i in 1..u
|
for i in 1..u
|
||||||
x = (m * u % p) + (i % p)
|
x = (m * u % p) + (i % p)
|
||||||
@ -521,6 +526,36 @@ def algorytmKodowania(a,b,p,m,n,u)
|
|||||||
end
|
end
|
||||||
|
|
||||||
#################################################################################
|
#################################################################################
|
||||||
|
# Zadanie 4
|
||||||
|
# Funkcja szyfrowanieElGamala(a,b,p,m,u,px,py,qx,qy)
|
||||||
|
#
|
||||||
|
# Zwraca szyfrogramy.
|
||||||
|
#################################################################################
|
||||||
|
def szyfrowanieElGamala(a,b,p,u,px,py,qx,qy,pmx,pmy)
|
||||||
|
y = SecureRandom.random_number(0..liczenieOrd(p))
|
||||||
|
puts "y = #{y}"
|
||||||
|
c1 = wielokrotnoscPunktu(a,b,p,y,px,py)
|
||||||
|
yq = wielokrotnoscPunktu(a,b,p,y,qx,qy)
|
||||||
|
c2 = sumaPunktow(a,b,p,pmx,pmy,yq[0],yq[1])
|
||||||
|
puts "Ciphers: C1=#{c1}, C2=#{c2}"
|
||||||
|
return c1,c2
|
||||||
|
end
|
||||||
|
|
||||||
|
#################################################################################
|
||||||
|
# Zadanie 5
|
||||||
|
# Funkcja deKodowanieElGamala(a,b,p,c1x,c1y,c2x,c2y,x)
|
||||||
|
#
|
||||||
|
# Zwraca odszyfrowany punkt początkowy na którym była wiadomość.
|
||||||
|
#################################################################################
|
||||||
|
def deKododwanieElGamala(a,b,p,c1x,c1y,c2x,c2y,x)
|
||||||
|
xc1 = wielokrotnoscPunktu(a,b,p,x,c1x,c1y)
|
||||||
|
pmd = sumaPunktow(a,b,p,c2x,c2y,xc1[0],-xc1[1])
|
||||||
|
#puts "-------------------DEBUG MODE-------------------\na = #{a}\nb = #{b}\np = #{p}\nc1x = #{c1x} \nc1y = #{c1y} \nc2x = #{c2x} \nc2y = #{c2y} \nx = #{x}\nXC1 = #{xc1.inspect}\npm = #{pmd.inspect}\n-------------------"
|
||||||
|
return pmd
|
||||||
|
end
|
||||||
|
|
||||||
|
#################################################################################
|
||||||
|
# Zadanie 6
|
||||||
# Funkcja algorytmDeSzyfrowania(x,y,u)
|
# Funkcja algorytmDeSzyfrowania(x,y,u)
|
||||||
#
|
#
|
||||||
# Zwraca odszyfrowaną wiadomość.
|
# Zwraca odszyfrowaną wiadomość.
|
||||||
@ -529,29 +564,3 @@ def algorytmDeSzyfrowania(x,y,u)
|
|||||||
m = (x - 1) / u
|
m = (x - 1) / u
|
||||||
return m
|
return m
|
||||||
end
|
end
|
||||||
|
|
||||||
#################################################################################
|
|
||||||
# Funkcja szyfrowanieElGamala(a,b,p,m,n,u,px,py,qx,qy)
|
|
||||||
#
|
|
||||||
# Zwraca szyfrogramy.
|
|
||||||
#################################################################################
|
|
||||||
def szyfrowanieElGamala(a,b,p,m,n,u,px,py,qx,qy)
|
|
||||||
pm = algorytmKodowania(a,b,p,m,n,u)
|
|
||||||
y = SecureRandom.random_number(0..liczenieOrd(p))
|
|
||||||
c1 = wielokrotnoscPunktu(a,b,p,y,px,py)
|
|
||||||
yq = wielokrotnoscPunktu(a,b,p,y,qx,qy)
|
|
||||||
c2 = sumaPunktow(a,b,p,pm[0],pm[1],yq[0],yq[1])
|
|
||||||
puts "Ciphers: C1=#{c1}, C2=#{c2}"
|
|
||||||
return c1,c2
|
|
||||||
end
|
|
||||||
|
|
||||||
#################################################################################
|
|
||||||
# Funkcja deKodowanieElGamala(a,b,p,c1x,c1y,c2x,c2y,x)
|
|
||||||
#
|
|
||||||
# Zwraca odszyfrowany punkt początkowy na którym była wiadomość.
|
|
||||||
#################################################################################
|
|
||||||
def deKododwanieElGamala(a,b,p,c1x,c1y,c2x,c2y,x)
|
|
||||||
xc1 = wielokrotnoscPunktu(a,b,p,x,c1x,c1y)
|
|
||||||
pmd = sumaPunktow(a,b,p,c2x,c2y,xc1[0],-xc1[1])
|
|
||||||
return pmd
|
|
||||||
end
|
|
||||||
|
Loading…
Reference in New Issue
Block a user