4

我正在使用一个AWS Powershell cmdlet New-KMSDataKey,它创建了一个System.IO.MemoryStream包含我需要用来加密某些文件的加密密钥。

这是命令的文档:

http://docs.aws.amazon.com/powershell/latest/reference/items/New-KMSDataKey.html

这是该 cmdlet 返回的对象:

http://docs.aws.amazon.com/sdkfornet/latest/apidocs/items/TKeyManagementServiceGenerateDataKeyResult_NET3_5.html

我正在尝试获得plaintext财产。如何访问System.IO.MemoryStream以获取密钥?

这是我的脚本示例:

$KMSKeyS3 = New-KMSDataKey -KeyId $KMSKeySource -KeySpec AES_256 -Region "ap-southeast-2"

这给了我:

CiphertextBlob           KeyId                                           Plaintext                                                   
--------------           -----                                           ---------
System.IO.MemoryStream   arn:aws:kms:ap-southeast-2:<Customer>:key/<Key> System.IO.MemoryStream
4

1 回答 1

0

简而言之,

# generate a data key
$KMSKeyS3 = New-KMSDataKey -KeyId $KMSKeySource -KeySpec AES_256 -Region "ap-southeast-2"

[byte[]]$plaintextDataKey = $KMSKeyS3.Plaintext.ToArray()
[byte[]]$encryptedDataKey = $KMSKeyS3.CiphertextBlob.ToArray()
[string]$encryptedDatakeyBase64 = $([Convert]::ToBase64String($encryptedDataKey))

有关PowerShell 和 KMS 上的问题的完整答案,请参阅此答案,包括经过测试的加密和解密脚本以及 base64 转换。

于 2016-12-15T05:39:09.263 回答