1

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

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

c#program 是这样开发的:

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
4

0 回答 0