Encriptação e descodificação de texto JavaScript?
estou interessado em construir um pequeno aplicativo para uso pessoal que irá criptografar e descriptografar informações no lado do cliente usando JavaScript. A informação criptografada será armazenada em um banco de dados em um servidor, mas nunca a versão descriptografada.
Não tem de ser super seguro, mas gostaria de usar um algoritmo actual.idealmente eu seria capaz de fazer algo como
var gibberish = encrypt(string, salt, key);
para gerar o texto codificado, e algo Tipo
var sensical = decrypt(gibberish, key);
Para descodificá-lo mais tarde.
Até agora, já vi isto.:
http://bitwiseshiftleft.github.io/sjcl/
Há outras bibliotecas que eu deva ver?
4 answers
var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
//U2FsdGVkX18ZUVvShFSES21qHsQEqZXMxQ9zgHy+bu0=
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
//4d657373616765
document.getElementById("demo1").innerHTML = encrypted;
document.getElementById("demo2").innerHTML = decrypted;
document.getElementById("demo3").innerHTML = decrypted.toString(CryptoJS.enc.Utf8);
Full working sample actually is:
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<br><br>
<label>encrypted</label>
<div id="demo1"></div>
<br>
<label>decrypted</label>
<div id="demo2"></div>
<br>
<label>Actual Message</label>
<div id="demo3"></div>
Podias fazer algo como com o AES:
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var encryptedAES = CryptoJS.AES.encrypt("Message", "My Secret Passphrase");
var decryptedBytes = CryptoJS.AES.decrypt(encryptedAES, "My Secret Passphrase");
var plaintext = decryptedBytes.toString(CryptoJS.enc.Utf8);
</script>
Quanto à segurança, no momento em que escrevo o algoritmo AES, pensa-se que está intacto.
Editar :
Parece que o URL 'online' está em baixo e você pode use os ficheiros transferidos para encriptação a partir de baixo dado link e coloque os respectivos ficheiros na sua pasta de topo da aplicação.
Https://code.google.com/archive/p/crypto-js/downloads
Ou outros CDN usados como https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/aes-min.js
CryptoJS não é mais suportado. Se quiser continuar a usá - lo, poderá mudar para este url:
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
Os navegadores modernos suportam agora a API crypto.subtle
, que fornece as funções de encriptação e descodificação nativas (async não menos!) usando um destes métodos: AES-CBC, AES-CTR, AES-GCM, ou RSA-OAEP.