rsacryptoserviceprovider使用x509证书c#

bkh*_*nal 7 .net security cryptography encryption-asymmetric

我正在使用由makecert生成的证书,该证书包含私钥和公钥.java端使用此公钥来加密数据,.net将其解密.

我试图解密Java的加密64位编码字符串并获取错误的数据.

为了看看是否一切都很好.在线端,我试图用公钥加密,然后使用相同的证书与私有解密.我的代码看起来像这样.

X509Certificate2 cert = GetCert(key, StoreName.My, StoreLocation.LocalMachine);
RSACryptoServiceProvider provider =  (RSACryptoServiceProvider)cert.PrivateKey;

RSACryptoServiceProvider publicprovider = (RSACryptoServiceProvider)cert.PublicKey.Key;

if (cert.HasPrivateKey)
    MessageBox.Show("Got private key");

byte[] encrypted = publicprovider.Encrypt(Encoding.UTF8.GetBytes(text), false);
byte[] decryptedBytes = provider.Decrypt(encrypted, false); 
Run Code Online (Sandbox Code Playgroud)

即便在这里我也收到了错误.我错过了什么吗?

证书看起来对公钥和私钥都有效.

Mat*_*lee 5

我遇到了与自签名证书相同的问题,问题是我使用交换机生成证书-sky signature而不是-sky exchange(您使用签名进行签名和交换加密/解密)

这是我对makecert有效的完整命令:

makecert -r -pe -a sha1 -n "CN=MyName" -ss my -sr CurrentUser -sky exchange
Run Code Online (Sandbox Code Playgroud)


bkh*_*nal 1

我终于找到了问题所在。我没有将密钥放入 makecert 以将其定义为 RSA 加密密钥。