首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用botocore解密数据

如何使用botocore解密数据
EN

Stack Overflow用户
提问于 2018-06-15 04:45:48
回答 1查看 83关注 0票数 0

我正在尝试打印解密的数据和加密的数据,以验证它是正确的。

代码语言:javascript
复制
session = botocore.session.get_session()
    client = session.create_client('kms',region_name = 'us-east-1',aws_access_key_id = '[YOUR ACCESS KEY]',aws_secret_access_key = '[YOUR SECRET ACCESS KEY]')

key_id = '[KEY ID]'
plaintext='[FILEPATH\FILENAME.CSV]'


ciphertext = client.encrypt(KeyId=key_id, Plaintext=plaintext)
ciphertextblob = ciphertext
decrypt_ciphertext = client.decrypt(CiphertextBlob = ciphertextblob)
print('Ciphertext: ' ciphertext)
print('Decrypted Ciphertext: 'decrypt_ciphertext)

当我运行这段代码时,数据被成功加密,然而,当它试图解密数据时,它给出了一个参数验证失败的错误。有没有人知道为什么会出现这个错误或者如何修复它?

EN

回答 1

Stack Overflow用户

发布于 2018-06-16 02:23:03

来自boto3/botocore的参数验证错误来自构造请求的预处理器。因此,这将在任何内容被发送到实际的服务API之前触发。

在本例中,如果您完全按照问题中的方式运行代码,则将整个encrypt响应作为CiphertextBlob参数传递,这将引发参数验证错误,因为它需要的是一个字节字符串,但收到的却是一个字典。您需要从响应中提取密文,然后发送该密文。

ie:将ciphertextblob = ciphertext更改为ciphertextblob = ciphertext['CiphertextBlob']

也就是说,从您示例的内容来看,您似乎正在尝试加密一个文件?KMS服务通过encrypt/decrypt API最多只能处理4096个字节的数据。如果需要加密大量数据,则需要使用某种形式的信封加密。我会推荐亚马逊网络服务加密SDK1。它被专门设计为尽可能简单,以便安全地使用,并具有与AWS KMS的内置集成。

1

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50865688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档