Encryption OpenSSL解密错误-填充与原始

Encryption OpenSSL解密错误-填充与原始,encryption,cryptography,Encryption,Cryptography,我从合作伙伴处收到一个加密文件及其密钥。密钥本身已使用我们的数字证书公钥加密 当我尝试使用以下内容和我们的私钥解密密钥时,我得到一个填充错误,如下所示: C:\openssl rsautl -decrypt -in xxxx_Key -inkey xxxxprivatekey.pem -hexdump -out aeskey.txt Loading 'screen' into random state - done RSA operation error 5612:error:0407109F:

我从合作伙伴处收到一个加密文件及其密钥。密钥本身已使用我们的数字证书公钥加密

当我尝试使用以下内容和我们的私钥解密密钥时,我得到一个填充错误,如下所示:

C:\openssl rsautl -decrypt -in xxxx_Key -inkey xxxxprivatekey.pem -hexdump -out aeskey.txt
Loading 'screen' into random state - done
RSA operation error
5612:error:0407109F:rsa routines:RSA_padding_check_PKCS1_type_2:pkcs decoding er
ror:.\crypto\rsa\rsa_pk1.c:273:
5612:error:04065072:rsa routines:RSA_EAY_PRIVATE_DECRYPT:padding check failed:.\
crypto\rsa\rsa_eay.c:602:

如果我将
-Raw
开关添加到decrypt,它似乎可以工作,但生成的hextump比我预期的要大得多。有人能就这里可能发生的事情提供建议吗?谢谢

我猜你是用错误的私钥解密,或者你的密文被破坏了

在RSA中,填充用于将加密消息的长度扩展为与模数相同的大小(因此1024位RSA将消息填充为1024位)。PKCS1type2(我相信)是PKCS#1v1.5的另一个名称,它在消息的开头添加了填充
0x00 | | | 0x02 | | |(随机字节)| 0x00
。解密时,完成的第一个检查是消息的开头是否为
0x00 0x02
。然后剥离第二个
0x00
之前的所有字节,生成原始消息。如果开始不是
0x00 0x02
或没有第二个
0x00
字节,则存在填充错误


如果忽略填充检查,则很可能会收到与RSA模数大小相同的消息,因为没有去除填充。考虑到大多数RSA模块至少为1024位,这将比AES密钥大得多。

问题当然是它是如何加密的:使用了哪些填充和编码?除了Artjom的评论外:您是否也尝试过
-oaep
-ssl
选项?嗨,Maarten,我已经尝试过了。没有帮助。阿乔姆,这当然是个问题。问题是我正在和国税局打交道,无法从他们那里得到任何回应。他们告诉我的只是如何解密他们发送的内容,但它不起作用,所以让我来解决它!亲爱的Firebladeboy,你有任何更新吗。我们现在面临着与国税局相同的问题,谢谢你的解释。然而,my-hextump-raw密钥的两端似乎都不符合这种描述。看起来是这样的:17fcbd502b…….f8aa4。总共512个字符!4位RSA密钥(模数)的长度为512字节。很可能IRS使用的是4kbit密钥。