[ create a new paste ] login | about

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

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

def create
   @board = Array.new()
   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_text[k] == " " ? "*" : @key_text[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(t)}\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(t).gsub('*',' ')}\n"
end


def show(t)
a = 0
result = ""
while a < t.length
unless t[a] == @n1 || t[a] == @n2 || t[a] == @n3
result = result + @checker_board[t[a]]
a+=1
else
result = result + @checker_board[   t[a+1] == nil ? t[a] :  (t[a] == @n1 ? 1 : t[a] == @n2? 2:3)*10+t[a+1]         ]
a+=2
end
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")
board.e("2641","encrypt this text")
board.d("2641","A118R1H81A8RALR8H5ALRA180_")
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
13
14
15
16
17
SH_8A_1RP_E5N*YOUWB2C3D4F6G7I9J0KLMQTVXZ
8725567494945822562387498580

Encrypt=S811R53S87A18RUAS8PSSH5
Decrypt=PROGRAMMING PRAXIS

202250724896239615802396209896

Encrypt=A118R1H81A8RALR8H5ALRA180_
Decrypt=ENCRYPT THIS TEXT


MY_*S_E5C_3RTKA1B2D4F6G7H8I9J0LNOPQUVWXZ
2195261393219252212400569152321928234

Encrypt=SF5E5*5MIREESEACY45YIS5****MESE
Decrypt=RUBY PROGRAMMING ROCKS


Create a new paste based on this one


Comments: