已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新此问题,以便editing this post可以用事实和引文来回答。
昨天关门了。
这篇文章是22小时前编辑并提交审查的。
Improve this question
编辑:答案在底部
两个应用程序共享一个数据库。我希望应用程序A能够将“消息”放入应用程序B可以读取的数据库中。
我希望以某种方式对消息进行加密,以便访问数据库的人很难解释消息,除非他们获得密钥(应用程序A和B共享的密钥)。
如何使用密码短语加密字符串,以便不同的应用程序可以使用相同的密码短语解密它?
export function encrypt(unencrypted: string, key: string): string {
// what do I write here?
}
export function decrypt(encrypted: string, key: string): string {
}
const someMessage = "Hello world!"
const encrypted = encrypt(someMessage, "somekey")
// print something unreadable
console.log(encrypted)
// print something unreadable, again
console.log(decrypt(encrypted, "wrongkey"))
// print "Hello world!"
console.log(decrypt(encrypted, "somekey"))
回答我
使用“加密js”
yarn add crypto-js && yarn add -D @types/crypto-js
然后我可以这样编码:
import cjs from "crypto-js"
function encrypt(data: string, key: string): string {
return cjs.AES.encrypt(data, key).toString()
}
function decrypt(data: string, key: string): string {
return cjs.AES.decrypt(data, key).toString(cjs.enc.Utf8)
}
const data = "somethingsecret"
const encrypted = encrypt(data, "somekey")
console.log(encrypted)
const decrypted = decrypt(encrypted, "somekey")
console.log(decrypted) // <-- "somethingsecret"
1条答案
按热度按时间kiz8lqtg1#
JSEncrypt是用于加密和解密消息的RSA算法的JavaScript实现。它可以在Web应用程序中用于加密和解密浏览器中的数据,而无需将敏感信息发送到服务器。
下面是一个例子:
你可以使用像https://travistidwell.com/jsencrypt/demo/这样的网站来生成公钥和私钥,或者使用openssl来生成。
encrypt
函数以未加密的消息和公钥为输入,返回加密的消息,decrypt
函数以加密的消息和私钥为输入,返回未加密的消息。应用程序A应该知道公钥,而应用程序B应该知道私钥。