AWS KMS - 存储/使用密文Blob

Jas*_*son 5 php amazon-web-services aws-kms

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

但是,blob的格式如下:

?g?'??w?i?<??a*\B4p 1IG
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

小智 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"]);
Run Code Online (Sandbox Code Playgroud)