我正在尝试使用 powershell 上的 aws cli 加密和解密内容(不是 powershell 特定的,而是标准的)
这是我的方法,这似乎更接近事实:
$input = "foo"
$file_path = "$(pwd)\file"
$region = "eu-west-1"
# ENCRYPT
$ciphertextblob =
aws kms encrypt `
--region $region `
--key-id "a266be0d-304b-4gf2-8b75-021ba4b0d23a" `
--plaintext $input |
ConvertFrom-Json |
Foreach-Object { $_.CiphertextBlob }
$encrypted = [System.Convert]::FromBase64String($ciphertextblob)
[io.file]::WriteAllBytes($file_path, $encrypted)
# DECRYPT
$decrypt =
aws kms decrypt `
--region $region `
--ciphertext-blob "fileb://$file_path"
# SHOW
$decrypt
结果是
{
"Plaintext": "Zm9v",
"KeyId": "arn:aws:kms:eu-west-1:639530368848:key/a266be0d-304b-4gf2-8b75-021ba4b0d23a"
}
如你看到的:
- 我定义了一个输入“foo”,最后变成“Zm9v”
- “Zm9v”不是base64
- 我获取 encrypt 命令结果,从 JSON 转换为 Powershell 对象,然后获取 CiphertextBlob
- 我将其从 base64 解码为纯文本,并使用 WriteAllBytes 将其写入二进制文件
- 最后我使用 fileb 用解密命令读取二进制文件
所以我的问题似乎是:
我必须在某处缺少编码......如果有人可以帮助我进步:-D
问候, 蒂博