TypeError:数据必须是缓冲区

时间:2019-04-19 20:59:15

标签: node.js google-cloud-functions aes cryptojs

我有一个http请求,我想在其中传递一些敏感数据,因此我尝试对这些数据进行加密。 在我的React Native应用程序中,我生成了一对带有react-native-rsa-native的密钥,并通过函数RSA.encrypt(我的字符串,我的公共密钥)使用公共密钥加密我的字符串。

此后,我在http请求中发送了生成的加密数据,然后尝试在node.js环境(Google Cloud Functions)中对其进行解密。为此,我使用了加密模块。

我通过以下方式导入它:

const crypto = require('crypto');

然后我尝试使用在我的本机模块中生成的RSA私钥解密数据:

crypto.privateDecrypt(rsaPrivateKey, myCryptedString)

但是我得到了错误:

  

TypeError:数据必须是缓冲区       在TypeError(本机)       在Object.privateDecrypt(crypto.js:375:12)       在exports.createPaymentMethod.functions.https.onRequest(/user_code/index.js:928:10)       在cloudFunction(/user_code/node_modules/firebase-functions/lib/providers/https.js:37:41)       在/var/tmp/worker/worker.js:783:7       在/var/tmp/worker/worker.js:766:11       在_combinedTickCallback(内部/进程/next_tick.js:73:7)       在process._tickDomainCallback   (内部/进程/next_tick.js:128:9)

有人可以解决我的问题吗?

1 个答案:

答案 0 :(得分:1)

根据documentation,密文应该是Buffer的实例,而不是String,因此您可以尝试将密文包装到缓冲区中:

crypto.privateDecrypt(rsaPrivateKey, Buffer.from(myCryptedString))