commit 63e97d3f520a6d77340300b2ea88dd1eaa8288b6 Author: Marcin Woźniak Date: Sat Nov 7 18:33:34 2020 +0100 Added version 1 Signed-off-by: Marcin Woźniak diff --git a/1/WarunkiZaliczeniaCwiczen.pdf b/1/WarunkiZaliczeniaCwiczen.pdf new file mode 100644 index 0000000..5f86262 Binary files /dev/null and b/1/WarunkiZaliczeniaCwiczen.pdf differ diff --git a/1/cw1_algkrypto1.pdf b/1/cw1_algkrypto1.pdf new file mode 100644 index 0000000..a9c4de4 Binary files /dev/null and b/1/cw1_algkrypto1.pdf differ diff --git a/1/kryptoalg1.pdf b/1/kryptoalg1.pdf new file mode 100644 index 0000000..089ae09 Binary files /dev/null and b/1/kryptoalg1.pdf differ diff --git a/2-lab/lab1.pdf b/2-lab/lab1.pdf new file mode 100644 index 0000000..3e451f5 Binary files /dev/null and b/2-lab/lab1.pdf differ diff --git a/2-lab/lab1_kryptoalgo.pdf b/2-lab/lab1_kryptoalgo.pdf new file mode 100644 index 0000000..361336f Binary files /dev/null and b/2-lab/lab1_kryptoalgo.pdf differ diff --git a/2-lab/modul1.rb b/2-lab/modul1.rb new file mode 100755 index 0000000..c1f8279 --- /dev/null +++ b/2-lab/modul1.rb @@ -0,0 +1,122 @@ +#!/usr/bin/ruby + +##################################### +# +# Marcin Woźniak +# s434812 +# +# Last edit: 27-10-2020 +# +##################################### + +#!/usr/bin/ruby + +require 'prime' +require 'openssl' +require 'securerandom' +require 'prime' + +def extended_euklides(a, b) + return 1, 0 if b == 0 + + q, r = a.divmod b + s, t = extended_euklides(b, r) + + return t, s - q * t +end + +## Zad. 1.1 +def random_gen_Zn(n,k) + + #b = k.to_s(2).count "[0-1]" + + #r = SecureRandom.random_number(n) + #x = r.to_s(2).count "[0-1]" + + #until x != b do + # #if r < n then + # r = SecureRandom.random_number(n) + # x = r.to_s(2).count "[0-1]" + # puts r + # puts x + # #end + #end + #return r + + if 2**(k-1) < n && k > 0 then + if k == 1 then + min = 0 + max = 1 + else + min = 2**(k-1) + max = (2**k)-1 + end + end + r = rand(min..max) + while true do + ra = rand(min..max) + if ra < n then + break + end + end + + return ra + +end + +## Zad. 1.2 +def reciprocal_Phi_n(n,b) + u = extended_euklides(n,b)[0] + v = extended_euklides(n,b)[1] + + if v % n == 0 then + return v + else + return u + end +end + +## Zad. 1.3 + +def betterExponentiation(x,k,n) + b = x.to_s(2) + l = b.count "[0-1]" + y = 1 + i = l - 1 + + for j in 1..i + y = y**2 % n + if b[-1*(j)] + y = y * x % n + end + end + return y +end + +## Zad. 1.4 +def remSqEuler(a,p) + ans = betterExponentiation(a,(p-1)/2,p) + + if ans > 0 && Prime.prime?(p) then + return true + else + return false + end +end + +## Zad. 1.5 +def squareRootFp(a) + p = 3 % 4 + if remSqEuler(a,p) then + bp = betterExponentiation(a,(p+1)/4,4) % 4 + bm = -1 * bp + return bp,bm + end +end + +#puts extended_euklides(10,13) +puts random_gen_Zn(50,3) +#puts reciprocal_Phi_n(10,13) +#puts betterExponentiation(112218876,2,10) +#puts remSqEuler(3,13) +#puts squareRootFp(13)