使用KMS解密持续出现InvalidCiphertextException

问题描述 投票:0回答:1

我已经使用此代码在 Golang 中生成了我的 KMS 密钥

    // Create the key
    result, err := svc.CreateKey(&kms.CreateKeyInput{
        Tags: []*kms.Tag{
            {
                TagKey:   aws.String("CreatedBy"),
                TagValue: aws.String("User"),
            },
        },
    })

这是在解密期间导致错误的行

            //Get body bytes
            body, _ := ioutil.ReadAll(resp.Body)
            //base64Text := make([]byte, base64.StdEncoding.EncodedLen(len(body)))
            //base64.StdEncoding.Encode(base64Text, []byte(body))
            //Needs decrypting?
            var newfile *bytes.Reader
            if decrypt == true {
                log.Println("Now decrypting data")
                log.Println("resp.SSECustomerAlgorithm : ", resp.SSECustomerAlgorithm)
                log.Println("resp.SSEKMSKeyId : ", aws.StringValue(resp.SSEKMSKeyId)) //right key found.
                newkms := inputfs.NewKms()
                //n := map[string]*string{"CreatedBy": aws.String("User") }
                params := &kms.DecryptInput{
                    CiphertextBlob: body,
                    //EncryptionContext:n,
                }
                output, err := newkms.Decrypt(params)
                if err != nil {
                    log.Println("Decrypt error :", err)
                }
                newbody := output.Plaintext
                newfile = bytes.NewReader(newbody)
            }

解密错误

     Decrypt error : InvalidCiphertextException: 
    status code: 400, request id: b69a8634-1784-4c57-8d3d-2439041249fe

这可能是什么原因造成的?我所做的一切似乎都不起作用。这是一个相关的问题:Decrypting using AWS go sdk但我没有看到答案。

amazon-kms aws-sdk-go
1个回答
0
投票

事实证明我的对象已经被解密了。
我的对象最初是使用 S3 PUTobject 操作进行 KMS 加密的。
AWS S3 在 S3 GETobject 操作上自动解密此类对象。
我实际上可以以明文形式获取特定对象,因此这支持了上述说法。
请参阅 请求标头和 Amazon S3 API

© www.soinside.com 2019 - 2024. All rights reserved.