2014-07-25 104 views
1

我正在使用NodeJS與亞馬遜網絡服務(特別是s3)進行交互。我正在嘗試使用Server side encryption with customer keys。只允許AES256作爲加密方法。 API指定密鑰爲base64編碼。如何使用base64對256位AES密鑰進行編碼?

目前我只是測試AWS api,我正在使用一次性測試文件,所以安全性(和安全密鑰生成)目前不是問題。

我的問題如下:鑑於我在佔用一個256位十六進制字符串,我該如何獲得一個base64編碼的整數表示的字符串?

我的第一反應是先解析十六進制字符串,爲整數,並將其轉換爲使用toString(radix)一個字符串,指定的64。然而toString()基數接受的36最大基數是否有這樣做的另一種方式?

即使我這樣做,是一個base64編碼的256位加密密鑰的字符串? API參考只是說它期望的密鑰是"appropriate for use with the algorithm specified"。 (我正在使用putObject方法)。

+0

這個問題地址編碼字符串。我想編碼一個整數。 – maxf130

回答

0

要在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') 
相關問題