【问题标题】:Openssl "data greater than mod len"Openssl“数据大于 mod len”
【发布时间】:2014-06-06 00:02:07
【问题描述】:

“数据大于 mod len”错误消息是什么意思?我在尝试使用 php 的 openssl_private_decrypt 解密数据时遇到了这个问题。如何解决这个问题?一直在网上搜索几个小时,却一无所获。

【问题讨论】:

    标签: encryption openssl private-key


    【解决方案1】:

    你也可以试试openssl enc -in cipherTextFile.base64 -out binaryTextFile.bin -d -a。当我在尝试解密时遇到此错误时,这对我有用。然后我可以使用openssl rsautl -decrypt -in binaryTextFile.bin -out plainTextFile.txt -inkey my-private-key.pem 解密而不会失败。

    【讨论】:

    • ciphertext 参数是什么意思?
    • 嗨@rustyMagnet。在我的回答中,ciphertext 指的是base64 编码文件。这是我在-in 参数中传递的内容。我已经更新了我的答案,以使文件路径应该作为参数传递的位置更加清晰。这有帮助吗?
    【解决方案2】:

    如果您遇到此解密错误:RSA_EAY_PRIVATE_DECRYPT:data greater than mod len 在解密文件之前尝试此命令:

    cat yourEncryptedFile| base64 -D > yourEncryptedRawFile
    

    【讨论】:

    • 不应该是base64 -d还是base64 --decode
    • 你也是对的,-D 为我工作,因为我在 macOS 平台上工作。命令变化取决于您的操作系统。有更多关于here的信息,问候!
    【解决方案3】:

    非对称 RSA 密钥只能加密/解密有限长度的数据,即RFC3447 中定义的 RSAES-PKCS1-v1_5 加密方案可以对长度为 k - 11 个八位字节的消息进行操作(k 是 RSA 模数的八位字节长度) 因此,如果您使用 2048 位 RSA 密钥,则要加密的纯数据的最大长度为 245 字节。

    【讨论】:

    • 是否有确定最大原像和图像尺寸的功能?我知道其他库也有类似的(如 Crypto++),但在 OpenSSL 中没有遇到过。
    • @jww 用于 RSA,RSA_size() 返回 RSA 模数大小,documented relation between modulus size, max length of plaintext and different paddings。我在 OpenSSL API 中没有看到任何更通用的非对称算法(这当然并不意味着不存在这样的东西)。
    • 谢谢。 RSA_size 并不是很有用。我在 OpenSSL 用户列表上询问:RSA and max preimage size?.
    • " RSAES-PKCS1-V1_5-ENCRYPT ((n, e), M) 输入:(n, e) 接收者的 RSA 公钥(k 表示模数 n 的八位字节长度) M 消息要加密,长度为 mLen 的八位字节字符串,其中 mLen
    • @automaton 如果你想加密更大的数据,那么你应该看看openssl_seal()openssl_open() 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多