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

How to encode 256bit AES key using base64?

本文关键字:AES 密钥 256位 编码 何使用 base64      更新时间:2023-09-26

我正在使用NodeJS与Amazon Web Services(特别是s3)进行交互。我正试图使用客户密钥的服务器端加密。加密方式只允许使用AES256。API指定密钥是base64编码的。

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

我的问题如下:假设我拥有一个256位十六进制字符串,我如何获得一个base64编码的整数字符串,它代表?

我的第一反应是首先将十六进制字符串解析为整数,并使用toString(radix)指定64的基数将其转换为字符串。然而,toString()接受的最大基数为36。还有别的办法吗?

即使我这样做,是一个base64编码字符串的256位加密密钥吗?API引用只是说它期望一个"适合与指定的算法一起使用"的键。(我使用的是putObject方法)

要在node.js中将十六进制字符串转换为base64字符串,可以很容易地使用Buffer;

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')