首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python教科书加密与openssl -它在做什么?

Python教科书加密与openssl -它在做什么?
EN

Stack Overflow用户
提问于 2013-12-05 03:20:20
回答 1查看 883关注 0票数 0

我有一套现有的Python代码,它使用原始(教科书) RSA加密机制来加密小数据。具体来说,python代码将公钥加载到变量publickey中,然后使用以下代码加密此数据:

代码语言:javascript
复制
ciphertext = publickey.encrypt(plaintext,None)

是的,我读过免责声明:“此函数执行朴素的原始RSA加密(教科书)。在实际应用中,您总是需要使用适当的加密填充,.”不幸的是,我现在无法更改这段代码,所以我不得不使用这个“教科书”加密命令。

请注意,即使此命令不使用任何填充方案,它似乎仍然能够加密任何(适当小)数量的明文。换句话说,明文可以是任意长度,但不超过RSA规定的任何限制。

但是,现在我想使用IOS应用程序中的OPENSSL库进行相同的RSA加密。我不知道如何做与python函数所做的完全相同的事情。OPENSSL有一个方法RSA_public_encrypt,其中传递明文的大小、明文本身、包含公钥信息的RSA对象指针以及RSA填充机制。为了复制python在密码库中所做的事情,我想我可以使用RSA_NO_PADDING作为填充机制。问题是OPENSSL在其文档中声明,如果使用RSA_NO_PADDING,那么要加密的明文的长度必须完全等于某个值: RSA_Size( rsa ),其中RSA是传入的RSA对象(包含公钥的对象)的指针。

换句话说,python库似乎能够在没有填充的情况下加密可变长度的明文,但是OPENSSL要求明文的长度是固定的。那么python库到底在做什么来处理明文的可变大小,我是否可以在OPENSSL中复制它呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-05 03:31:05

如果您查看填充物的文档,它们会解释:

此模式只应用于在应用程序代码中实现加密声音填充模式。直接用RSA加密用户数据是不安全的。

换句话说,RSA_NO_PADDING适用于您自己处理填充的情况,因此OpenSSL需要适当大小的输入。这并不意味着“教科书RSA”。

您不能更改python代码有一个令人信服的原因吗?教科书RSA是不安全的,你使用它会冒很大的风险。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20390762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档