[ create a new paste ] login | about

Link: http://codepad.org/IWp8LPPk    [ raw code | output | fork ]

novatech - Ruby, pasted on Jan 31:
class Straddling 
def initialize( key, n1, n2, n3 )
   key = key+"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
   key = key.upcase.split(//).uniq
   @key = key;@n1 = n1;@n2 = n2;@n3 = n3
end

def create
   @board = Array.new(4)
   k = 0;prev = ""
   for a in 0..40 do
       if (a == @n1 || a == @n2 || a == @n3)
     	 @board[a] = " "
       else
         if ("A".."J") === prev

          @board[a] = prev == "J"? 0:((prev)[0]-16).chr
         else
          @board[a] = @key[k] == " " ? "*" : @key[k]
          k+=1
         end
         prev = @board[a]
       end
    end
   return @board.to_s
end


def tp(key,text)
@key = key.split(//)
@text = text.gsub(' ','*').upcase.split(//)
end

def keygen
@keygen = Array.new
@checker_board = @board.to_s.split(//)
for a in 0..@text.length-1 do
	found = @checker_board.index(@text[a])
	if (0..9) === found
        @keygen.push(found)
	elsif (10..19) === found
        @keygen.push(@n1,found%10)
	elsif (20..29) === found
        @keygen.push(@n2,found%10)
	else
        @keygen.push(@n3,found%10)
	end
end
end

def e(key,text)
self.tp(key,text)
self.keygen
print "#{@keygen.to_s}\n"
@t = Array.new
@keygen.each do |value| 
@t.push((@key[0].to_i+value.to_i)%10)
@key << @key.shift
end
print "#{@t.to_s}\n"
print "Encrypt=#{self.show}\n"
end

def d(key,text)
self.tp(key,text)
self.keygen
@t = Array.new
@keygen.each do |value| 
@t.push((value+10-(@key[0]).to_i)%10)
@key << @key.shift
end
print "Decrypt=#{self.show.gsub('*',' ')}\n"
end


def show
a = 0
result = ""
while a < @t.length
unless @t[a] == @n1 || @t[a] == @n2 || @t[a] == @n3
result = result + @checker_board[@t[a]]
else
result = result + @checker_board[(@t[a] == @n1 ? 1 : @t[a] == @n2? 2:3)*10+@t[a+1]]
a+=1
end
a+=1
end
return result
end


end
board = Straddling.new("sharpen your saw",2,5,9)
puts(board.create)
board.e("2641","programming praxis")
board.d("2641","S811R53S87A18RUAS8PSSH5")
puts("\n\n")
board = Straddling.new("my secret keys",2,5,9)
puts(board.create)
board.e("241","ruby programming rocks")
board.d("241","SF5E5*5MIREESEACY45YIS5****MESE")


Output:
1
2
3
4
5
6
7
8
9
10
11
12
SH 8A 1RP E5N*YOUWB2C3D4F6G7I9J0KLMQTVXZ
8725567494945822562387498580
0366721510357463726403800121
Encrypt=S811R53S87A18RUAS8PSSH5
Decrypt=PROGRAMMING PRAXIS


MY *S E5C 3RTKA1B2D4F6G7H8I9J0LNOPQUVWXZ
2195261393219252212400569152321928234
4507673705621664624812971564733330646
Encrypt=SF5E5*5MIREESEACY45YIS5****MESE
Decrypt=RUBY PROGRAMMING ROCKS


Create a new paste based on this one


Comments: