首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript字符串加密和解密?

JavaScript字符串加密和解密?
EN

Stack Overflow用户
提问于 2013-08-17 01:40:22
回答 8查看 492K关注 0票数 213

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

它不一定是超级安全的,但我想使用目前未破解的算法。

理想情况下,我可以做一些像这样的事情

代码语言:javascript
复制
var gibberish = encrypt(string, salt, key);

来生成编码的字符串,以及类似于

代码语言:javascript
复制
var sensical = decrypt(gibberish, key);

以便稍后解码。

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

有没有其他我应该看看的库?

EN

回答 8

Stack Overflow用户

发布于 2014-10-12 01:46:45

代码语言:javascript
复制
 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);
代码语言:javascript
复制
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>

票数 208
EN

Stack Overflow用户

发布于 2019-01-04 00:46:31

我创建了一个不安全但简单的文本加密/解密实用程序。与任何外部库没有依赖关系。

以下是函数:

代码语言:javascript
复制
const cipher = salt => {
    const textToChars = text => text.split('').map(c => c.charCodeAt(0));
    const byteHex = n => ("0" + Number(n).toString(16)).substr(-2);
    const applySaltToChar = code => textToChars(salt).reduce((a,b) => a ^ b, code);

    return text => text.split('')
      .map(textToChars)
      .map(applySaltToChar)
      .map(byteHex)
      .join('');
}
    
const decipher = salt => {
    const textToChars = text => text.split('').map(c => c.charCodeAt(0));
    const applySaltToChar = code => textToChars(salt).reduce((a,b) => a ^ b, code);
    return encoded => encoded.match(/.{1,2}/g)
      .map(hex => parseInt(hex, 16))
      .map(applySaltToChar)
      .map(charCode => String.fromCharCode(charCode))
      .join('');
}

// To create a cipher
const myCipher = cipher('mySecretSalt')

//Then cipher any text:
console.log(myCipher('the secret string'))

//To decipher, you need to create a decipher and use it:
const myDecipher = decipher('mySecretSalt')
console.log(myDecipher("7c606d287b6d6b7a6d7c287b7c7a61666f"))

票数 73
EN

Stack Overflow用户

发布于 2018-09-11 05:12:20

现代浏览器现在支持crypto.subtle应用程序接口,它提供了本机加密和解密功能(异步也不例外!)使用以下方法之一: AES-CBC、AES-CTR、AES-GCM或RSA-OAEP。

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

票数 25
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18279141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档