Есть ли способ преобразовать строку в число 10 для шифрования?

Примечание: я нашеланалогичный вопрос, но это в питоне.

Я пытался придумать алгоритм или нативный метод для этого, и я в тупике.

Это то, что я до сих пор:

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

По сути, мне нужен способ конвертировать строку, как'Hello World!' к основному 10 (шестнадцатеричное будет работать также) число, как14438792758793754875и мне интересно, есть ли правильный способ сделать это, прежде чем я потрачу время на что-то вроде:

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

Мало того, что это будет очень много времени, но я понятия не имею, как я мог бы преобразовать его обратно, как только я попадаю в числа, такие как11 заL, цикл for не будет делать, и вернетсяBB.

Причина, по которой я спрашиваю об этом, заключается в том, что я планирую использовать ее в будущем для более эффективного и безопасного зашифрованного хранилища. например, что-то вроде:

//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

На самом деле я потратил несколько минут на ручное шифрование «Молоко», «Яйца» и «Хлеб» для их аналогов base36, чтобы оно могло быть точным.

Обновить:Aadit M Shaw дал функцию, которая производит шестнадцатеричные строки из строк, и я спроектировал ее в соответствии со своими потребностями и получил это:

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,' ')
}

Хотя закодированная строка больше, чем мне бы хотелось, она может быть полезна для защиты куки от взлома или чего-то еще.

Например, используя пример, который я сделалВотЯ сделал это сообщение21173b2x3030172t2p38173d333936172u2p2r2t а также этоЎDŽ̺ǦDŽ̌, И если вам удастся декодировать второй, то декодировать это тожеʒ̴ͻϮ

Это не очень практично, поэтому я, вероятно, в конечном итоге использовать библиотекуRagnarokkr связал меня с.

Спасибо всем за ответы!

Ответы на вопрос(2)

Ваш ответ на вопрос