我有一个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)
有人可以解决我的问题吗?
答案 0 :(得分:1)
根据documentation,密文应该是Buffer
的实例,而不是String
,因此您可以尝试将密文包装到缓冲区中:
crypto.privateDecrypt(rsaPrivateKey, Buffer.from(myCryptedString))