问题描述
我正在使用 KMS 加密在后端加密一些文本并将其存储在 DynamoDB 中。我想在 React 应用程序中获取这些加密数据并在客户端解密并在应用程序上呈现它。
const aws = require("aws-sdk");
aws.config.update({
accessKeyId: "XXXXXXXX",secretAccessKey: "XXXXXXXX",region: "us-west-2"
});
const kmsClient = new aws.KMS();
async function decrypt(source) {
return new Promise(resolve => {
const params = {
CiphertextBlob: Buffer.from(source,"base64")
};
resolve(
kmsClient
.decrypt(params,function(err,data) {
if (err) return err;
else return data;
})
.promise()
);
});
}
async function main(){
const text = "AQICAHgn0gojN8GVu8NR2ok4Y453sOiOIMANtpT8k/35z6PiZgEi1OW+v4dOk2W9+TTjY2pDAAAAaTBnBgkqhkiG9w0BBwagWjBYAgEAMFMGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMG5C7KST+uuxxN3QbAgEQgCbhYZH4Lw1KiHmHPqbzsvtmHPVv4mh1y04ZCbE0Hnho7dBk0IPd0w==";
let res = await decrypt(text);
console.log(res.Plaintext.toString());
}
main();
响应 -
Decrypted text
这里我可以成功获取解密文本
为了在我的 React 应用程序中移动这个功能,我在我的 React 应用程序的实用程序文件中添加了相同的逻辑,并在我想要这个函数的组件中导入了这个 decrypt 函数。
当我在 React 应用程序中使用此功能一次时 响应 -
Decrypted text
xhr.js:81 POST https://kms.us-west-2.amazonaws.com/ 400 (Bad Request)
当我多次使用这个功能时 响应 -
xhr.js:81 POST https://kms.us-west-2.amazonaws.com/ 400 (Bad Request)
HomeContent.js:172 InvalidSignatureException: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.
at Request.extractError (http://localhost:3000/static/js/bundle.js:88161:28)
at Request.callListeners (http://localhost:3000/static/js/bundle.js:98088:21)
at Request.emit (http://localhost:3000/static/js/bundle.js:98060:11)
at Request.emit (http://localhost:3000/static/js/bundle.js:100092:15)
at Request.transition (http://localhost:3000/static/js/bundle.js:99431:11)
at AcceptorStateMachine.runTo (http://localhost:3000/static/js/bundle.js:100238:13)
at http://localhost:3000/static/js/bundle.js:100250:11
at Request.<anonymous> (http://localhost:3000/static/js/bundle.js:99447:10)
at Request.<anonymous> (http://localhost:3000/static/js/bundle.js:100094:13)
at Request.callListeners (http://localhost:3000/static/js/bundle.js:98098:19)
我是否遗漏了什么,任何建议都会有所帮助
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)