python - 为什么 Google Cloud KMS 会为相同的输入文本生成不同的加密密文?
问题描述
我正在尝试使用 Google Cloud Key Management Service (KMS) python API 加密机密和敏感数据。我注意到在加密后的每次迭代中,相同的输入文本的相同密钥会生成不同的加密密文。我的意思是,对于相同的输入文本,我得到不同的加密密文。
我的问题是,
- 为什么加密的密文被改变了?如何为相同的输入获得相同的加密密文/值?
- 如何控制加密密文的长度?
这是我使用的python代码
from google.cloud import kms
client = kms.KeyManagementServiceClient()
name = 'projects/sandbox/locations/global/keyRings/encryptdecrypt-keyring/cryptoKeys/encryptdecrypt-key_v01/cryptoKeyVersions/1' #CryptoKey info
plaintext = b'hello123' # The data to encrypt
enc1=client.encrypt(request={'name': name, 'plaintext': plaintext})
参考:
解决方案
是的,系统在加密相同的输入时会生成不同的密文。这是大多数加密系统的重要安全控制;它可以防止攻击者让您对特定消息 M 进行加密,以便他们可以确定他们手头的密文 C 是否也是同一消息 M 的加密副本。
有些系统提供一致的加密输出;该属性称为确定性加密。但是,我建议在选择机制之前咨询密码学专家;这些工具很棘手。
我们不承诺加密密文的确切长度;如果您需要它是可预测的,我想更多地了解我们为什么以及如何提供帮助。
感谢您使用 GCP 和 Cloud KMS!
推荐阅读
- r - R函数检测未使用的函数参数
- huawei-mobile-services - 如果我的测试用户找不到我的开放测试应用程序版本,我该怎么办?
- etl - 如何在 Informatica Power Center 中从多个表生成单个文件
- php - PHP:使用 onclick 在新窗口(不是新选项卡)中打开 href
- node.js - MERN 堆栈 MongoDB 权限和访问级别设置
- r - betareg 不在 CentOS 上使用多线程
- excel - 如何只过滤excel中的日期
- android - 如何将应用上传到 Google Play 商店(封闭测试)?
- javascript - 反应中的动态元标记问题
- python - 如何从termux(Andriod)在Heroku中运行Python文件?