如何修复RSA_public_decrypt函数生成的错误

时间:2016-02-16 11:01:16

标签: c# c openssl libcrypto openssl-net

我在Linux下开发了一个随机数发送到远程电脑,然后远程电脑读取数字并用openssl私钥加密(用C#windows应用程序),之后发送,c程序尝试使用openssl公钥解密它,如下所示:

int padding = RSA_PKCS1_PADDING;
RSA_public_decrypt(data_len,enc_data,decrypted,rsa,padding);

c#程序是这样开发的:

CryptoKey d = CryptoKey.FromPrivateKey(privateKeyAsPem, null);
RSA rsa = d.GetRSA();
byte[] result = rsa.PrivateEncrypt(code, RSA.Padding.PKCS1);
rsa.Dispose();

问题是我有一个随机行为,有时C程序解密而没有错误,有时我得到以下错误:

error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed

如何解决这个问题?

注:

在Linux下生成密钥如下:

openssl genpkey -algorithm RSA -out priv.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in priv.pem -out pub.pem

0 个答案:

没有答案