JavaScript 字符串加密和解密?

2022-08-30 00:38:42

我有兴趣构建一个供个人使用的小型应用程序,该应用程序将使用JavaScript在客户端加密和解密信息。加密的信息将存储在服务器上的数据库中,但永远不会存储在解密的版本中。

它不必是超级傻瓜安全的,但我想使用一个当前不间断的算法。

理想情况下,我能够做这样的事情

var gibberish = encrypt(string, salt, key);

生成编码的字符串,如下所示

var sensical = decrypt(gibberish, key);

稍后解码。

到目前为止,我已经看到了这个:http://bitwiseshiftleft.github.io/sjcl/

我应该查看其他库吗?


答案 1

 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" integrity="sha256-/H4YS+7aYb9kJ5OKhFYPUjSJdrtV6AeyJOtTkw6X72o=" crossorigin="anonymous"></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>

答案 2

CryptoJS怎么样?

这是一个可靠的加密库,具有许多功能。它实现了哈希器,HMAC,PBKDF2和密码。在这种情况下,密码是您需要的。查看项目主页上的快速入门提示。

你可以对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>

至于安全性,在我写作的那一刻,AES算法被认为是不间断的

编辑:

似乎在线URL已关闭,您可以使用下载的文件从下面进行加密给定的链接,并将相应的文件放在应用程序的根文件夹中。

https://code.google.com/archive/p/crypto-js/downloads

或使用其他 CDN,如 https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/aes-min.js