def letterconv(letter)
larr = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
narr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]
i = 0
while i < larr.length
if letter == larr[i]
return narr[i]
end
i += 1
end
end
def gen_key_string(key,istr)
istr = istr.gsub(" ",'')
key = key.gsub(" ",'')
istr = istr.upcase
key = key.upcase
karr = key.split(//)
nkarr = []
p = 0
while nkarr.length < istr.length
p = 0
while p < karr.length
if nkarr.length == istr.length
break
else
nkarr << karr[p]
p += 1
end
end
end
return nkarr
end
def strconv(strarr)
narr = []
i = 0
while i < strarr.length
narr << letterconv(strarr[i])
i += 1
end
return narr
end
def stradd(strarr1,strarr2)
i = 0
narr = []
while i < strarr1.length
narr << strarr1[i] + strarr2[i]
i += 1
end
return narr
end
def strsubt(strarr1,strarr2)
i = 0
narr = []
while i < strarr1.length
narr << strarr1[i].to_i - strarr2[i].to_i
i += 1
end
return narr
end
def strshort(strarr)
i = 0
narr = []
while i < strarr.length
bit = strarr[i]
if bit > 26
bit = bit - 26
narr << bit
else
narr << bit
end
i += 1
end
return narr
end
def strshort2(strarr)
i = 0
narr = []
while i < strarr.length
bit = strarr[i]
if bit < 0
narr << 26 + bit
else
narr << bit
end
i += 1
end
return narr
end
def numconv(num)
larr = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
narr = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]
i = 0
while i < narr.length
if num == narr[i]
return larr[i]
end
i += 1
end
end
def strconv2(strarr)
narr = []
i = 0
while i < strarr.length
narr << numconv(strarr[i])
i += 1
end
return narr
end
def encrypt(str,key)
osstr = str.upcase.gsub(" ","").split(//)
narr = gen_key_string(key,str)
nosstr = strconv(osstr)
nnarr = strconv(narr)
narr3 = stradd(nosstr,nnarr)
narr4 = strshort(narr3)
narr5 = strconv2(narr4)
return narr5.join()
end
def decrypt(encrypted_string,key)
variable_arr = encrypted_string.upcase.gsub(" ","").split(//)
print variable_arr
puts
variable_key = gen_key_string(key,encrypted_string)
variable_arr = strconv(variable_arr)
variable_key = strconv(variable_key)
new_number_array = strsubt(variable_arr,variable_key)
new_number_array = strshort2(new_number_array)
output_array = strconv2(new_number_array)
return output_array.join
end
ostr = "this is a complex string"
key = "hello world"
ostr2 = encrypt(ostr,key)
puts decrypt(ostr2,key)