是否可以使用存储在KMS中的非对称客户密钥对文本进行加密/解密,并将其传递给aws-encryption-sdk-python的加密和解密功能?我尝试过这样做,但无法通过加密步骤,它会引发一个错误:
An error ocurred (InvalidKeyUsageException) when calling the GenerateDataKey operation: You cannot generate a data key with an assymetric CMK.
据我所知,解密AES-256-CBC加密字符串需要一个秘密密钥(与CBC块大小相同的长度)和一个初始化向量(IV)。由于IV应该是随机的,因此它与加密文本一起以明文分发。
是否有标准或至少“常用”格式来格式化结果?
例如,/usr/bin/openssl似乎连接了"Salted___“+ IV +密码文本,然后base64对所有内容进行编码。这会是一种推荐的方式吗?我想存储加密的文本,但仍然能够用任何PHP/Python/Java库在10年内解密它。
我制作了一个Python脚本,使用中描述的对称密钥算法加密明文文件。然后,我创建了第二个脚本来解密加密的消息。原文如下:
I came, I saw, I conquered.
以下是加密和解密后的文本:
I came, I saw, I conquerdd.
几乎完美,除了一封信。对于较长的文本,会出现多个字母,即出现的字符的数字表示比原始字符的数字表示低一个。我不知道这是为什么。
这是我的脚本的工作原理。首先,我生成了一个随机的数字序列--我的笔记本--并将它保存在文本文件"pad.txt“中。我不会显示代码,因为它非常简单。然后,我保存了我想要在"text.txt“中加密
我刚刚开始玩密码学&公钥加密。我创建了一个小型python程序,它是中给出的算法的直译(参见RSA示例部分)。代码如下所示。
使用GPG时,如果您使用相同的密钥多次加密相同的文本,则每次都会给出不同的密文。是否有可能将这种随机性添加到下面的程序中(而不求助于复杂的高级数学:P)?这样我每次加密时都会得到不同的密文,还能解密吗?
def enc(message, pubkey) :
msg = [ord(char) for char in message]
e,n = pubkey
c = [m**e%n for m in msg]
return c
d