AWS KMS - 存储/使用密文Blob

时间:2015-06-23 20:22:29

标签: php amazon-web-services aws-kms

我刚刚使用AWS Key Management Service进行设置,并调用方法generateDataKey。该方法正在工作并返回CiphertextBlob和Plaintext blob。

但是,blob的格式如下:

�g�'��w�i�<��a*\B4p 1IG

我正在使用API​​,因此,根据文档,它不是编码的。我试图理解明文是否能以某种方式在PHP中“解码”,这样我就可以存储它/使用它而不需要看起来奇怪的ASCII字符。我期待的是一长串字符而不是上面的特殊字符。我觉得我错过了一些简单的事情。

谢谢!

2 个答案:

答案 0 :(得分:2)

答案是二进制blob。这些将需要进行base64编码,以便您获得预期的结果。

示例代码如下:     

use Aws\Kms\KmsClient;

$options = [
    'region'                => 'eu-west-1',
    'version'               => '2014-11-01',
    'profile'               => 'default',
    'retries'               => 0,
    'scheme'                => 'https',
    'debug'                 => false
];

$kmsClient = new KmsClient($options);

$result = $kmsClient->generateDataKey([
    'KeyId' => '12345678-1234-1233-1234-1234567890ab',
    'KeySpec' => 'AES_256'
]);

echo base64_encode($result["CiphertextBlob"]);
echo "\r\n";
echo ($result["KeyId"]);

答案 1 :(得分:1)

您需要以 base64 编码对 blob 进行编码,以符合 API。