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?

Author: Freiheit, 2013-08-16

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>
 116
Author: Tomas Kirda, 2016-05-24 00:51:12
Que tal CryptoJS? É uma biblioteca criptográfica sólida, com muitas funcionalidades. Implementa hashers, HMAC, PBKDF2 e cifras. Neste caso, as cifras são o que precisas. Confira o quide-quick-start na página inicial do projeto.

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

 41
Author: ovidb, 2017-08-01 12:57:05

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>

 3
Author: Dmytro Lopushanskyy, 2018-05-04 19:26:02

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.

Https://www.w3.org/TR/WebCryptoAPI/#dfn-Crypto

 0
Author: richardtallent, 2018-09-10 21:12:20