Existe uma maneira de converter uma seqüência de caracteres em um número de base 10 para criptografia?

Nota: eu encontrei umpergunta semelhante, mas é em python.

Eu tenho tentado pensar em um algoritmo ou método nativo para isso, e estou perplexo.

Isto é o que eu tenho até agora:

encode=function(n,f){
    return (n).toString(f)
}
decode=function(s,f){
    return parseInt(s,f)
}

Basicamente, eu preciso de uma maneira de converter uma string, como'Hello World!' para uma base 10 (hexadecimal funcionará bem) número, como14438792758793754875, e eu estou querendo saber se há uma maneira correta de fazê-lo antes que eu possa perder meu tempo com algo como:

str='Hello World'
returnString=''
for(var i in str){
    returnString+=(
        str[i]=='A'?'0'
        :str[i]=='B'?'1'
        etc...
    )
}

Não só isso seria muito demorado, mas eu não tenho idéia de como eu poderia convertê-lo de volta, como uma vez eu entrar em números como11 paraL, um loop não faria, e retornariaBB.

A razão pela qual estou perguntando isso é porque pretendo usá-lo no futuro para um armazenamento criptografado mais eficiente e seguro. por exemplo, algo como:

//save
numstr=encodeToNumber(inputElement.value)
b36str=encode(numstr,36)
storage['items'].push(b36str)
localStorage['App Data']=JSON.stringify(storage)

//load
if(localStorage['App Data']){
    storage=JSON.parse(localStorage['App Data'])
}else{
    storage={
        items:[],
        config:{
            etc
        }
    }
}
//Assuming storage.items looks like this: ['rgie', 'zyy', '2il7']
for(i in storage['items']){
    b36str=storage['items']//rgie, zyy, 2il7
    numstr=decode(b36str,36)//1281110, 46618, 117403
    container.innerHTML+='<hr>'+decodeFromNumber(numstr)//Milk, Eggs, Bread
}

//Output
Milk
Eggs
Bread

Na verdade, passei vários minutos criptografando manualmente 'Milk', 'Eggs' e 'Bread' para suas bases36 para que pudesse ser preciso.

Atualizar:Aadit M Shaw deu uma função que produz seqüências de caracteres hexadecimais de seqüências de caracteres, e eu inverti engenharia para minhas necessidades e tenho isso:

en=function(s){
    var s2d=function(s){
        s=s.replace(/ /g,'+').replace(/!/g,'.')
        var n=[]
        for(var i in s){
            n.push(s.charCodeAt(i))
        }
        return n
    }
    var arr=s2d(s)
    var s2=''
    for (var i in arr){
        s2+=arr[i].toString(36)
    }
    return s2
}
de=function(s){
    var arr=s.split(/(..)/)
    var arr2=[]
    var s2=''
    for(var i in arr){
        if(arr[i]){
            arr2.push(parseInt(arr[i],36))
        }
    }
    for(var i in arr2){
        s2+=String.fromCharCode(arr2[i])
    }
    return s2.replace(/\+/g,' ')
}

Enquanto a string codificada é maior do que eu teria gostado, poderia ser útil para proteger cookies de serem hackeados ou algo assim.

Por exemplo, usando o exemplo que fizAquiEu fiz essa mensagem21173b2x3030172t2p38173d333936172u2p2r2t assim como issoЎDŽ̺ǦDŽ̌. E se você conseguir decodificar o segundo, decodifique isso tambémʒ̴ͻϮ

Isso não é muito prático, então eu provavelmente vou acabar usando a bibliotecaRagnarokkr me ligou a.

Obrigado a todos pelas respostas!

questionAnswers(2)

yourAnswerToTheQuestion