gpt4 book ai didi

node.js - 类型错误 : Not a buffer node. js 加密,aws-sdk

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:49 25 4
gpt4 key购买 nike

我正在尝试创建一个用于上传到亚马逊 s3 的 S3 策略...但是在对策略进行编码时,出现类型错误:不是缓冲区。我正在使用加密版本:0.0.3 和 aws-sdk 版本:2.0.0-rc.19

这之前是有效的,所以我认为它可能与 aws-sdk 的更新有关...

这是代码。注释将显示错误发生的位置:

createS3Policy = function(contentType, callback) {
var date = new Date();
var s3Policy = {
'expiration': getExpiryTime(),
'conditions': [
['starts-with', '$key', 'shimmy-assets/'],
{'bucket': S3_BUCKET},
{'acl': 'public-read'},
['starts-with', '$Content-Type', contentType],
{'success_action_status' : '201'}
]
};

// stringify and encode the policy
var stringPolicy = JSON.stringify(s3Policy);
console.log('string policy: ' + stringPolicy);
var base64Policy = new Buffer(stringPolicy, 'utf-8').toString('base64');

// sign the base64 encoded policy
// NOT A BUFFER ERROR HERE
var signature = crypto.createHmac('sha1', AWS_SECRET_KEY).update(new Buffer(base64Policy, 'utf-8')).digest('base64');

// build the results object
var s3Credentials = {
s3Policy: base64Policy,
s3Signature: signature,
AWSAccessKeyId: AWS_ACCESS_KEY
};

// send it back
callback(s3Credentials);
};

最佳答案

刚刚遇到了同样的问题,所以这是我的工作代码:

我使用以下函数来计算hmac;

function hmac(algorithm, key, text, encoding) {
var hmac = crypto.createHmac(algorithm, key);

hmac.setEncoding(encoding);
hmac.write(text);
hmac.end();

return hmac.read();
};

所以我的签名是:

var signature = hmac(
'sha1',
secretAccessKey, //Line A
new Buffer(JSON.stringify(policy)).toString('base64')), //Line B
'base64');

确保 A 行和 B 行未定义。即使secretAccessKey是一个字符串,如果它未定义,它也会抛出NOT A BUFFER错误!

关于node.js - 类型错误 : Not a buffer node. js 加密,aws-sdk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24145508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com