我正在寻找一个标准的方式加密和签名的消息使用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()
函数。我想一定有一个库或者工具集或者其他什么东西可以帮我做到这一点,甚至可以允许与其他执行类似任务的程序进行互操作。你知道吗
问题:
我更倾向于使用RSA和AES,可以选择与任何其他选择的算法进行交换,但也欢迎使用固定算法集的解决方案。你知道吗
正如我所说,从爱丽丝发送到鲍勃是我的第一种方法,但能够发送到多个接收器将是一个很好的奖金。你知道吗
您可以使用^{} 加密和签名您想要发送的任何内容。你知道吗
正确的加密是困难的。所以基本上加密的第一个原则是“不要DIY”。你知道吗
但如果必须的话,请先看这些教程:the state of crypto in Python,what to do when you need crypto,crypto 101。你知道吗
相关问题 更多 >
编程相关推荐