codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
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")
Private
[
?
]
Run code
Submit