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)