mirror of https://github.com/E-Almqvist/hsf
parent
9024d45675
commit
adfa2eb253
@ -0,0 +1,28 @@ |
|||||||
|
#!/usr/bin/ruby -w |
||||||
|
|
||||||
|
require_relative "rsa.rb" |
||||||
|
# pubkey : 7, 143 |
||||||
|
# msg : 81 |
||||||
|
|
||||||
|
# find n = 143 with primes |
||||||
|
Primes = File.read("primes.txt").split(",") |
||||||
|
|
||||||
|
print "Modbase target: " |
||||||
|
target = gets.chomp.to_i |
||||||
|
|
||||||
|
def bruteforce(target) |
||||||
|
Primes.each do |p| |
||||||
|
second = Primes.dup |
||||||
|
second.delete p |
||||||
|
second.each do |p2| |
||||||
|
prod = p.to_i * p2.to_i |
||||||
|
if prod == target then |
||||||
|
return p, p2 |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
p1, p2 = bruteforce(target) |
||||||
|
puts "Found primes:" |
||||||
|
puts p1, p2 |
@ -0,0 +1,50 @@ |
|||||||
|
module RSA |
||||||
|
def self.mod_inv(a, m) |
||||||
|
(1..m).each{|x| break x if (a*x % m == 1)} |
||||||
|
end |
||||||
|
|
||||||
|
class Key |
||||||
|
def initialize(p1, p2) |
||||||
|
@p1 = p1 |
||||||
|
@p2 = p2 |
||||||
|
@n = p1 * p2 |
||||||
|
@phi = (p1-1)*(p2-1) |
||||||
|
|
||||||
|
(2...@phi).each do |e| |
||||||
|
if( e.gcd(@phi) == 1 ) then |
||||||
|
@e = e |
||||||
|
break |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
@d = RSA.mod_inv(@e, @phi) |
||||||
|
end |
||||||
|
|
||||||
|
def pubkey |
||||||
|
return @e, @phi |
||||||
|
end |
||||||
|
|
||||||
|
def privkey |
||||||
|
return @d, @phi |
||||||
|
end |
||||||
|
end |
||||||
|
|
||||||
|
def self.encrypt(text, key) |
||||||
|
n, mod = key.pubkey |
||||||
|
p [n, mod] |
||||||
|
text_enc = "" |
||||||
|
text.split("").each_with_index do |c, i| |
||||||
|
charint = c.ord ** n |
||||||
|
p charint |
||||||
|
charint %= mod |
||||||
|
p charint |
||||||
|
puts "enc #{c.ord} -> #{charint}" |
||||||
|
text_enc += charint.chr |
||||||
|
end |
||||||
|
|
||||||
|
return text_enc |
||||||
|
end |
||||||
|
|
||||||
|
def self.decrypt(text) |
||||||
|
end |
||||||
|
end |
Loading…
Reference in new issue