Só um detalhe (porque sou um cara chato e pedante): atob
e btoa
são funções para converter de/para Base64. E Base64 não é um algoritmo de hash. Base64 é reversível (vc consegue voltar para a string original), mas um algoritmo de hash não é.
Ah, e Base64 não é criptografia, por isso "encrypt" e "decrypt" acabam não sendo bons nomes. No fundo vc só está fazendo uma conversão de dados (sim, Base64 só converte/codifica (que é diferente de criptografar) os bytes para um subconjunto do ASCII). Talvez "encode" e "decode" faça mais sentido, pois esta é a terminologia padrão para algoritmos de codificação de dados = como é o caso do Base64 (inclusive, muitas API's usam nomes como encodeBase64
e decodeBase64
, por exemplo).
Sei que parece frescura, mas acho importante a gente dar os nomes certos para as coisas. Isso ajuda muito na hora de programar. Sem contar que nossa área já sofre demais com nomenclatura não-padronizada e conceituação errada das coisas, e propagar esses pequenos erros (que no longo prazo vão se acumulando, até ficarem fora de controle) é algo que deveria ser evitado.
Pra completar, a função unescape
está obsoleta e a documentação da MDN diz para usar decodeURIComponent
ou decodeURI
no lugar.
Ou seja, ao fazer unescape(encodeURIComponent(namesJoint))
, no fundo vc está fazendo o mesmo que decodeURIComponent(encodeURIComponent(namesJoint))
, que na prática é o mesmo que simplesmente usar namesJoint
diretamente. A diferença é que unescape
aceita sequências de 4 dígitos hexadecimais e decodeURIComponent
não, mas como encodeURIComponent
só gera sequências com 2 dígitos, na prática toda essa volta que vc fez não fará diferença, e bastaria fazer simplesmente btoa(namesJoint)
.
O mesmo vale para escape
, que segundo a documentação, também está obsoleto, sendo recomendado o uso de encodeURIComponent
ou encodeURI
no lugar. Ou seja, decodeURIComponent(escape(atob(encodedStr)))
seria equivalente a decodeURIComponent(encodeURIComponent(atob(encodedStr)))
e portanto também é desnecessário, podendo fazer apenas atob(encodedStr)
.