首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在纯文本上执行OAEP填充

如何在纯文本上执行OAEP填充
EN

Stack Overflow用户
提问于 2018-01-06 12:41:53
回答 1查看 1.8K关注 0票数 0

我正在重新构造RSA密码系统。我知道填充对于密码的安全性是必不可少的,因此我选择了PKCS1 OAEP填充,因为它是填充消息的最安全方法之一。我无法从我的研究中找到精确的、简单易懂的执行OAEP填充的来源。

代码语言:javascript
复制
>>> message = "Hello World"
>>> message_length = len(message)  # value: 11
>>> hash = sha1("").hexdigest() #  value: "da39a3ee5e6b4b0d3255bfef95601890afd80709"
>>> hash_length = len(hash)  # value: 40
>>> mod_size = (66707621741034658424514206418677753964865266688022969048429208771289785288847727334295743540860932900769628607474618294659295004562698532947535801821428015940719336654123007538255459184765551631213180128939808032261346408111382837800099426844454970753309552867519518744723276317986718923680385211621637413963).bit_length()  # size of public modulus (value: 1023)
>>> mod_size_bytes = -(-mod_size//8)  # size of public modulus in bytes, using ceil division

通过研究,我发现上面的数据对于执行PKCS1 OAEP填充是必要的,但是我不知道如何正确地利用它。

代码中是否定义了所有必要的变量?如果是这样,如何使用这些变量来执行OAEP填充?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-08 16:44:00

https://www.rfc-editor.org/rfc/rfc3447#section-7.1.1上描述了OAEP填充算法。

选项:

  • 你对Hash的选择似乎是SHA-1。
  • MGF-1实际上是MGF的唯一选择,所以我们也可以假设这一选择。

投入:

  • 您有RSA n值,但没有e (但是如果要将填充与加密分开编写,则不需要e)。
  • 您有M ( "Hello“的一些字节编码)
  • 您有L =(空字符串)。

变量:

  • 你有k (mod_size_bytes)
  • 你有mLen (message_length)
  • 您有lHash (哈希)
  • 你错过了PSseeddbMaskmaskedDBseedMaskmaskedSeedEM

如果您正在编写您自己的OAEP加法器,您将实现7.1.1第2部分,在您的实现中使用与规范相同的名称通常会导致更好的错误检测。

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

https://stackoverflow.com/questions/48127441

复制
相关文章

相似问题

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