5

我只是让自己使用 AWS Key Management Service 进行设置并调用该方法generateDataKey。该方法正在工作并返回 CiphertextBlob 和明文 blob。

但是,blob 的格式类似于:

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

我正在使用 API,因此根据文档,它没有被编码。我试图了解明文是否可以在 PHP 中以某种方式“解码”,以便我可以存储/使用它而无需所有看起来很奇怪的 ASCII 字符。我期待的是一长串字符,而不是上面的特殊字符。我觉得我错过了一些简单的东西。

谢谢!

4

2 回答 2

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"]);
于 2017-09-12T08:08:50.983 回答
1

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

于 2021-06-29T18:58:45.460 回答