我正在重新构造RSA密码系统。我知道填充对于密码的安全性是必不可少的,因此我选择了PKCS1 OAEP填充,因为它是填充消息的最安全方法之一。我无法从我的研究中找到精确的、简单易懂的执行OAEP填充的来源。
>>> 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填充?
谢谢!
发布于 2018-01-08 16:44:00
在https://www.rfc-editor.org/rfc/rfc3447#section-7.1.1上描述了OAEP填充算法。
选项:
投入:
n值,但没有e (但是如果要将填充与加密分开编写,则不需要e)。M ( "Hello“的一些字节编码)L =(空字符串)。变量:
k (mod_size_bytes)mLen (message_length)lHash (哈希)PS,seed,dbMask,maskedDB,seedMask,maskedSeed和EM如果您正在编写您自己的OAEP加法器,您将实现7.1.1第2部分,在您的实现中使用与规范相同的名称通常会导致更好的错误检测。
https://stackoverflow.com/questions/48127441
复制相似问题