如何使用base64编码256位AES密钥?

时间:2014-07-25 10:18:43

标签: javascript node.js amazon-web-services amazon-s3

我正在使用NodeJS与Amazon Web Services(特别是s3)进行交互。我正在尝试使用Server side encryption with customer keys。仅允许AES256作为加密方法。 API指定密钥是base64编码的。

目前我只是在测试AWS api,我正在使用一次性测试文件,因此安全性(和安全密钥生成)目前不是问题。

我的问题如下:鉴于我处于256位十六进制字符串的位置,如何获得表示的整数的base64编码字符串?

我的第一直觉是首先将十六进制字符串解析为整数,并使用toString(radix)将其转换为字符串,指定基数为64.但是toString()接受最大基数为36.是否存在另一种方式呢?

即使我这样做,是否是256位加密密钥的base64编码字符串? API参考只是说它需要一个"appropriate for use with the algorithm specified"的密钥。 (我使用的是putObject方法)。

1 个答案:

答案 0 :(得分:0)

要在node.js中将十六进制字符串转换为base64字符串,您可以非常轻松地使用缓冲区;

var key_in_hex = '11223344556677881122334455667788'
var buf = new Buffer(key_in_hex, 'hex')
var str = buf.toString('base64') 

...将str设置为相当于传入的十六进制字符串的base64('112233 ...')

你当然也可以将它组合成一个班轮;

var key_in_hex = '11223344556677881122334455667788'
var str = new Buffer(key_in_hex, 'hex').toString('base64')