【发布时间】:2023-01-12 15:54:33
【问题描述】:
编辑:答案在底部
两个应用程序共享一个数据库。我希望应用程序 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"))
回答
使用“crypto-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"
【问题讨论】:
-
你为什么不使用已经建立的加密方法?
-
公平警告这个问题是自以为是-- 正如 vera 提到的,您可以使用多种加密方法。为了让您走上正轨,根据您的代码,您正在寻找对称(1 密钥)加密——AES 可能会有所帮助。
-
令人难以置信的是,没有人可以提供一个简单的示例来说明如何使用密码来加密字符串。加密模块可能是我需要的,但我宁愿不必处理要选择的算法、初始化向量等。它应该是 2 行代码。
gpg我可以用密码加密文件,为什么在 Node 中做同样的事情这么难? -
对于那些将此问题标记为基于意见的人,请帮个忙,在地上挖一个洞,然后躺在里面。除了“1+1 是多少?”以外的所有问题固执己见。
标签: node.js typescript encryption