#16 De hecho importan bastante, para acotar las soluciones. Pero no obstante estoy convencido de que este problema tiene infinitas soluciones. O lo que es lo mismo, hay infinitas claves que forman una frase con ese mensaje. Aquí unas de ejemplo:
20,-4,7,-23,10,4,-11,11,-3,-6,-2,4,1,14,-7,10,1,-12,-3,18,-23,20,-7,-4,-3,12,-17,16,-22,20,-2,9,-1,
-24,26,-18,16,-9,9,-15,4,-13,-3,22,-18,-2,15,5,-13,-5,15,-10
1,6,-6,27,-17,15,1,-1,1,-9,5,-19,4,8,4,-5,11,-4,-21,4,12,10,2,-14,3,10,-11,-9,8,-11,0,8,14,0,
-13,6,-19,24,2,-4,-7,3,-5,9,2,-3,1,6,-22,-1,8
Estas claves tienen la misma longitud que el mensaje original, que las quieres mas cortas? pues quitar el ultimo elemento es bastante sencillo. Ir quitando mas se ira complicando pero en cualquier caso van a seguir habiendo muchas soluciones. Tu mensaje original desencriptado esta entre miles (o cientos de miles) de posibles mensajes que con cierta clave dan ese resultado, imposible de saber cual es el tuyo.
He hecho una pequeña funcion para sacar las claves para que de como resultado la frase que uno quiera:
var abc = 'abcdefghijklmnopqrstuvwxyz+,.:abcdefghijklmnopqrstuvwxyz+,.:';
var x=0;
function reverse(strfrom,strto) {
var codes = [];
for(var i=0;i<strfrom.length;i++){
var res = codeChar(strfrom[i],strto[i])
x += res;
codes.push(res);
}
return codes.join(',');
}
function codeChar(fromChar,toChar){
var i = abc.indexOf(fromChar);
var abcsliced = abc.slice(i);
return abcsliced.indexOf(toChar)-x;
}
console.log(reverse('aaaaaaaaaaaaaaaaamevoyasobaraaaaaaaaaaaaaaaaaaaaaaaa','juggyeq+polstg.:j+tbgfd.wyv+fjb.olpbfh,tqfe,vkbzngds'));