Dmi*_*ets 14 c# cryptography certificate pki
我试图加密,然后使用非对称加密解密文件.我使用makecert创建了一个测试证书,并将其安装到我的个人本地机器商店中.将来我必须在几台服务器上安装这个证书,这就是为什么我用"-pe"标志创建它,也就是说,用可导出的私钥创建它.证书已成功创建和安装,我在mmc中看到"您有一个与此证书对应的私钥".
现在我尝试使用.NET 3.5中的RSACryptoServiceProvider加密数据.它成功了.但是当我试图解密它时,我得到"坏键"异常.
如果我创建没有"-pe"选项的证书,相同的代码适用于解密.这是代码:
RSA rsaKey = (RSA)myCertificate.PrivateKey;
RSACryptoServiceProvider rsaCsp = (RSACryptoServiceProvider)rsaKey;
byte[] plainText = rsaCsp.Decrypt(encryptedText, true);
Run Code Online (Sandbox Code Playgroud)
我还尝试了另一种方法,使用System.Security.Cryptography.Pkcs命名空间:
EnvelopedCms envelope = new EnvelopedCms();
envelope.Decode(encryptedText);
envelope.Decrypt();
byte[] plainText = envelope.ContentInfo.Content;
Run Code Online (Sandbox Code Playgroud)
结果是一样的...任何人都可以帮忙吗?
小智 25
如果使用makecert.exe,请确保使用"-sky Exchange"创建了您正在使用的密钥.如果没有这个,你只能使用密钥进行签名和身份验证,而不是加密/解密,这是你在这里实现的用例.