用Python加密

2024-06-11 08:12:40 发布

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

我正在用Python编写一个加密函数,我想用公钥加密一个随机数。

我想知道,如果我使用加密包(Crypto.publicKey.pubkey),我如何才能使用像。。。

def encrypt(self,plaintext,k)

这里的k本身就是一个随机数,这意味着密钥。有人能帮我做点相关的事吗?


Tags: 函数selfdef密钥cryptoencrypt公钥plaintext
3条回答

是否尝试使用收件人的公钥加密会话/邮件密钥以进行对称加密?在这些情况下,使用SSH或TLS可能更简单。

回到你的问题:

Me Too Crypto(m2cypto)是一个很好的openssl包装器。

首先,您需要获取收件人的公钥:

recip = M2Crypto.RSA.load_pub_key(open('recipient_public_key.pem','rb').read())

现在您可以加密邮件:

plaintext = random_integer_you_want_to_encrypt
msg = recip.public_encrypt(plaintext,RSA.pkcs1_padding)

现在只有拥有接收者的私有密钥的人才能解密它。

传递给加密的值k不是密钥的一部分。k是用于随机加密的随机值。每次加密邮件时,它应该是不同的随机数。

不幸的是,取决于您使用的公钥算法,这个k需要满足或多或少的严格条件。一、 例如,如果k不包含足够的熵,则加密可能是完全不安全的。这使得使用pycrypto变得困难,因为您需要比库的开发人员更多地了解所使用的密码系统。在我看来,这是pycrypto的一个严重缺陷,我建议您使用一个更高级的加密库,不需要知道任何这样的细节。(例如M2Crypto)

你可以试试Pycrypto

相关问题 更多 >