使用 CiphertextBlob 作为字符串获取 InvalidCiphertextException
Getting InvalidCiphertextException with CiphertextBlob as String
我正在尝试使用 AWS KMS 解密字符串,但收到 InvalidCiphertextException 错误(异常名称后没有更多信息)。
我最初是在节点 js lambda 中解密,使用环境变量作为 encryptedString 的源:
var params = {
CiphertextBlob: Buffer.from(encryptedString, 'base64')
};
kms.decrypt(params, function(err, data) {
if (err) {
...
} else {
...
}
}
我也尝试过将 CiphertextBlob 值作为字符串,即:
CiphertextBlob: encryptedString
原来用于加密值的KMS密钥是一个对称的CMK,所以我相信我应该不需要传入密钥ID。
我也通过 awscli 尝试了同样的事情(将 ciphertext-blob 作为字符串传递)但得到了同样的错误:
aws kms decrypt --ciphertext-blob <encrypted string value> --query PlainText | base64 --decode
传入密钥 ID 也没有效果。
我已经使用在线工具验证了加密后的字符串是base64。我不太了解 base64 编码,所以不确定这是否足以证明密文有效。
我确定我在一些基本问题上失败了 - 我的加密字符串不是 base64 或不是解密所期望的,或者我可能缺少一些额外的解密参数。
提前致谢。
根据评论。
问题与解密 SSM 参数有关。因此,在解密过程中必须提供 加密上下文 。来自 docs:
Parameter Store includes this encryption context in calls to encrypt and decrypt the MyParameter parameter in an example AWS account and region.
"PARAMETER_ARN":"arn:aws:ssm:<REGION_NAME>:<ACCOUNT_ID>:parameter/<parameter-name>"
因此,如果您不使用 get_parameter 且 WithDecryption
选项设置为 True
,您必须在使用期间提供上述 加密上下文 KMS decrypt
操作。
我正在尝试使用 AWS KMS 解密字符串,但收到 InvalidCiphertextException 错误(异常名称后没有更多信息)。
我最初是在节点 js lambda 中解密,使用环境变量作为 encryptedString 的源:
var params = {
CiphertextBlob: Buffer.from(encryptedString, 'base64')
};
kms.decrypt(params, function(err, data) {
if (err) {
...
} else {
...
}
}
我也尝试过将 CiphertextBlob 值作为字符串,即:
CiphertextBlob: encryptedString
原来用于加密值的KMS密钥是一个对称的CMK,所以我相信我应该不需要传入密钥ID。
我也通过 awscli 尝试了同样的事情(将 ciphertext-blob 作为字符串传递)但得到了同样的错误:
aws kms decrypt --ciphertext-blob <encrypted string value> --query PlainText | base64 --decode
传入密钥 ID 也没有效果。
我已经使用在线工具验证了加密后的字符串是base64。我不太了解 base64 编码,所以不确定这是否足以证明密文有效。
我确定我在一些基本问题上失败了 - 我的加密字符串不是 base64 或不是解密所期望的,或者我可能缺少一些额外的解密参数。
提前致谢。
根据评论。
问题与解密 SSM 参数有关。因此,在解密过程中必须提供 加密上下文 。来自 docs:
Parameter Store includes this encryption context in calls to encrypt and decrypt the MyParameter parameter in an example AWS account and region.
"PARAMETER_ARN":"arn:aws:ssm:<REGION_NAME>:<ACCOUNT_ID>:parameter/<parameter-name>"
因此,如果您不使用 get_parameter 且 WithDecryption
选项设置为 True
,您必须在使用期间提供上述 加密上下文 KMS decrypt
操作。