我对构建一个个人使用的小应用程序感兴趣,它将使用JavaScript加密和解密客户端的信息。加密的信息将存储在服务器上的数据库中,但不会存储解密的版本。
它不一定是超级安全的,但我想使用目前未破解的算法。
理想情况下,我可以做一些像这样的事情
var gibberish = encrypt(string, salt, key);
来生成编码的字符串,以及类似于
var sensical = decrypt(gibberish, key);
以便稍后解码。
到目前为止,我已经看到了:http://bitwiseshiftleft.github.io/sjcl/
有没有其他我应该看看的库?
发布于 2014-10-12 01:46:45
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>
发布于 2019-01-04 00:46:31
我创建了一个不安全但简单的文本加密/解密实用程序。与任何外部库没有依赖关系。
以下是函数:
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"))
发布于 2018-09-11 05:12:20
现代浏览器现在支持crypto.subtle
应用程序接口,它提供了本机加密和解密功能(异步也不例外!)使用以下方法之一: AES-CBC、AES-CTR、AES-GCM或RSA-OAEP。
https://stackoverflow.com/questions/18279141
复制相似问题