| @@ -24,18 +24,13 @@ def main | |||||||
|   puts "Klucz priv: #{privKey.inspect}" |   puts "Klucz priv: #{privKey.inspect}" | ||||||
|   puts "" |   puts "" | ||||||
|  |  | ||||||
|   pm = szyfrowanieElGamala(m,n,u,a,b,p,px,py,qx,qy) |  | ||||||
|  |  | ||||||
|   # BOB |   # BOB | ||||||
|   y = SecureRandom.random_number(0..liczenieOrd(p)) |   c1, c2 = szyfrowanieElGamala(a,b,p,m,n,u,px,py,qx,qy) | ||||||
|   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} + #{c2}" |  | ||||||
|  |  | ||||||
|   # ALICE |   # ALICE | ||||||
|   pmd = deSzyfrowanieElGamala(a,b,p,c1[0],c1[1],c2[0],c2[1],x) |   pmd = deKododwanieElGamala(a,b,p,c1[0],c1[1],c2[0],c2[1],x) | ||||||
|   d = algorytmDeKodowania(a,b,p,pmd[0],pmd[1],n,u) |   d = algorytmDeSzyfrowania(pmd[0],pmd[1],u) | ||||||
|  |   puts "Deszyfowany punkt #{pmd.inspect}" | ||||||
|   puts "Dekodowana wiadomość #{d.inspect}" |   puts "Dekodowana wiadomość #{d.inspect}" | ||||||
| end | end | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										26
									
								
								module.rb
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								module.rb
									
									
									
									
									
								
							| @@ -516,37 +516,41 @@ def algorytmKodowania(a,b,p,m,n,u) | |||||||
|   else |   else | ||||||
|     puts "Nieprawidołowe dane" |     puts "Nieprawidołowe dane" | ||||||
|   end |   end | ||||||
|  |   puts "Punkt na krzywej to #{[x,y].inspect}" | ||||||
|   return [x,y] |   return [x,y] | ||||||
| end | end | ||||||
|  |  | ||||||
| ################################################################################# | ################################################################################# | ||||||
| # Funkcja algorytmDeKodowania(a,b,p,x,y,n,u) | # Funkcja algorytmDeSzyfrowania(x,y,u) | ||||||
| # | # | ||||||
| # Zwraca odszyfrowaną wiadomość. | # Zwraca odszyfrowaną wiadomość. | ||||||
| ################################################################################# | ################################################################################# | ||||||
| def algorytmDeKodowania(a,b,p,x,y,n,u) | def algorytmDeSzyfrowania(x,y,u) | ||||||
|   m = (x - 1) / u |   m = (x - 1) / u | ||||||
|   return m |   return m | ||||||
| end | end | ||||||
|  |  | ||||||
| ################################################################################# | ################################################################################# | ||||||
| # Funkcja szyfrowanieElGamala(m,n,u,a,b,p,px,py,qx,qy) | # Funkcja szyfrowanieElGamala(a,b,p,m,n,u,px,py,qx,qy) | ||||||
| # | # | ||||||
| # Koduje wiadomość na punkt na krzywej | # Zwraca szyfrogramy. | ||||||
| # eliptycznej. |  | ||||||
| ################################################################################# | ################################################################################# | ||||||
| def szyfrowanieElGamala(m,n,u,a,b,p,px,py,qx,qy) | def szyfrowanieElGamala(a,b,p,m,n,u,px,py,qx,qy) | ||||||
|   c = algorytmKodowania(a,b,p,m,n,u) |   pm = algorytmKodowania(a,b,p,m,n,u) | ||||||
|   puts "Wiadomość na prostej jako punkt #{c.inspect}" |   y = SecureRandom.random_number(0..liczenieOrd(p)) | ||||||
|   return c |   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 | end | ||||||
|  |  | ||||||
| ################################################################################# | ################################################################################# | ||||||
| # Funkcja deSzyfrowanieElGamala(a,b,p,c1x,c1y,c2x,c2y,x) | # Funkcja deKodowanieElGamala(a,b,p,c1x,c1y,c2x,c2y,x) | ||||||
| # | # | ||||||
| # Zwraca odszyfrowany punkt początkowy na którym była wiadomość. | # Zwraca odszyfrowany punkt początkowy na którym była wiadomość. | ||||||
| ################################################################################# | ################################################################################# | ||||||
| def deSzyfrowanieElGamala(a,b,p,c1x,c1y,c2x,c2y,x) | def deKododwanieElGamala(a,b,p,c1x,c1y,c2x,c2y,x) | ||||||
|   xc1 = wielokrotnoscPunktu(a,b,p,x,c1x,c1y) |   xc1 = wielokrotnoscPunktu(a,b,p,x,c1x,c1y) | ||||||
|   pmd = sumaPunktow(a,b,p,c2x,c2y,xc1[0],-xc1[1]) |   pmd = sumaPunktow(a,b,p,c2x,c2y,xc1[0],-xc1[1]) | ||||||
|   return pmd |   return pmd | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user