我刚刚使用AWS Key Management Service进行设置,并调用方法generateDataKey
。该方法正在工作并返回CiphertextBlob和Plaintext blob。
但是,blob的格式如下:
�g�'��w�i�<��a*\B4p 1IG
我正在使用API,因此,根据文档,它不是编码的。我试图理解明文是否能以某种方式在PHP中“解码”,这样我就可以存储它/使用它而不需要看起来奇怪的ASCII字符。我期待的是一长串字符而不是上面的特殊字符。我觉得我错过了一些简单的事情。
谢谢!
答案 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。