Google云KMS:加密有效,但解密失败

时间:2018-01-09 15:34:31

标签: google-cloud-kms

我正在尝试使用Google KMS工具解密令牌。 由于某种原因,在本地运行它,加密似乎有效,但不能解密。

我正在运行以下代码:

import base64
import googleapiclient.discovery
kms_client = googleapiclient.discovery.build('cloudkms', 'v1')
crypto_keys = kms_client.projects().locations().keyRings().cryptoKeys()
name = "projects/my-project/locations/my-loc/keyRings/my-kr/cryptoKeys/my-key"
request = crypto_keys.decrypt(name=name, body={'ciphertext': base64.b64encode("my text").decode('ascii')})
response = request.execute()

最后一行返回400错误:

HttpError: <HttpError 400 when requesting https://cloudkms.g[...]ion:decrypt?alt=json 
returned "Decryption failed: verify that 'name' refers to the correct CryptoKey.">
然而,这个名字实际上似乎是正确的。 令人惊讶的是,将decrypt的调用替换为encrypt,我获得了有效的输出。

我是否错过了一个明显的错误,或者我应该在项目的github上打开一个问题?

编辑: 我试图解密纯文本,这当然没有多大意义(但错误信息误导了我)。

1 个答案:

答案 0 :(得分:1)

确保您要解密的密文已使用相同的密钥加密。如果您使用另一个密钥进行加密,则KMS会告诉您,虽然实际上找到了该密钥,但它找不到该密钥,但不能用于解密该密码。

我认为错误消息“有点”令人误解。