使用RSA和AES加密/解密;标准?

2024-04-23 07:52:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个标准的方式加密和签名的消息使用RSA和AES。我知道在伪代码中发生的操作是这样的:

爱丽丝向鲍勃发送秘密签名信息的行为:

AES = random()      
message' = encrypt(message, AES)
AES' = encrypt(AES, Bob's public RSA)   
messageHash = hash(message')
signature = encrypt(messageHash, Alice's private RSA)
send(Bob, AES')
send(Bob, message')
send(Bob, signature)

鲍勃收到爱丽丝的秘密签名信息的行为:

AES', message', signature = split(input)
AES = decrypt(AES', Bob's private RSA)
messageHash = decrypt(signature, Alice's public RSA)
receivedMessageHash = hash(message')
messageHash == receivedMessageHash? --> bail out if unequal
message = decrypt(message', AES)

因此,Alice选择了一个随机的AES密钥,用它对消息进行加密并将其发送给Bob,同时发送一个加密版本的AES密钥对其进行解密,以及一个签名来证明她是发起人。你知道吗

当然,还有其他的设置,比如发送给多个人或者不需要签名或者类似的,但是我正在寻找这样的设置。也许我理解错了,我上面的伪代码不够精确或者包含bug。它代表了我对这件事的粗浅理解;—)

我可以自己一步一步地完成这一切,使用Python库(如Crypto)或unixshell工具(如openssl)。你知道吗

但我正在寻找一种标准的方法来实现这一点,而不必担心如何实现填充或在接收消息时伪代码中使用的split()函数。我想一定有一个库或者工具集或者其他什么东西可以帮我做到这一点,甚至可以允许与其他执行类似任务的程序进行互操作。你知道吗

问题:

  1. 我的上述设置是否可行和典型?或者它是否包含任何逻辑错误、缺陷或可攻击的方面?你知道吗
  2. 为了保持与其他程序的互操作性,我是否应该坚持使用我的用例的标准格式(一些RFC、pkc等),如果是,作为Unix命令行工具或Python库提供的哪些软件能够处理这个标准?你知道吗

我更倾向于使用RSA和AES,可以选择与任何其他选择的算法进行交换,但也欢迎使用固定算法集的解决方案。你知道吗

正如我所说,从爱丽丝发送到鲍勃是我的第一种方法,但能够发送到多个接收器将是一个很好的奖金。你知道吗


Tags: 代码send信息消息message标准rsaencrypt
1条回答
网友
1楼 · 发布于 2024-04-23 07:52:57

您可以使用^{}加密和签名您想要发送的任何内容。你知道吗

正确的加密是困难的。所以基本上加密的第一个原则是“不要DIY”。你知道吗

但如果必须的话,请先看这些教程:the state of crypto in Pythonwhat to do when you need cryptocrypto 101。你知道吗

相关问题 更多 >