Windows系统下如何不通过二进制文件调用Amazon AWS KMS解密函数?
在Windows下无需临时二进制文件解密AWS KMS加密字符串
嘿,我完全懂你不想生成临时二进制文件的烦恼!在Windows上不用绕base64/certutil写文件的步骤,直接用PowerShell配合AWS CLI就能搞定,给你分享两种亲测有效的方法:
方法一:PowerShell直接处理(推荐)
PowerShell对字节和Base64的转换支持很友好,能直接把Base64加密串转成字节流,通过管道传给AWS CLI的解密命令,全程不碰磁盘文件:
# 替换成你的Base64加密字符串 $encryptedBase64 = "你的KMS加密后的Base64字符串" # 解密流程:Base64转字节 -> 传给AWS CLI -> 解密后转明文 $encryptedBytes = [Convert]::FromBase64String($encryptedBase64) $encryptedBytes | Set-Content -Path - -Encoding Byte | aws kms decrypt --ciphertext-blob file:///dev/stdin --output text --query Plaintext | ForEach-Object { [Convert]::FromBase64String($_) }
命令解释:
[Convert]::FromBase64String():把Base64字符串转成二进制字节数组Set-Content -Path - -Encoding Byte:把字节数组输出到标准输出(-代表标准输出)aws kms decrypt --ciphertext-blob file:///dev/stdin:让AWS CLI从标准输入读取二进制加密数据--output text --query Plaintext:指定输出解密后的明文Base64串- 最后一步把返回的Base64明文再转成可读字符串
方法二:利用CMD + PowerShell混合(适合习惯CMD的场景)
如果平时用CMD更多,也可以把PowerShell的字节转换逻辑嵌入到CMD命令里:
powershell -Command "$encryptedBytes = [Convert]::FromBase64String('你的Base64加密字符串'); $encryptedBytes | Set-Content -Path - -Encoding Byte" | aws kms decrypt --ciphertext-blob file:///dev/stdin --output text --query Plaintext | powershell -Command "$input | ForEach-Object { [Convert]::FromBase64String($_) }"
注意事项:
- 确保你的AWS CLI已经配置好正确的权限(需要
kms:Decrypt权限,并且密钥策略允许当前身份解密) - 如果你需要把明文输出到控制台或者变量里,可以调整最后一步的处理逻辑,比如保存到文件的话就加
> plaintext.txt
内容的提问来源于stack exchange,提问作者Bert Cushman
相关产品推荐
相关产品推荐

