在尝试使用USB令牌证书后,我的应用程序在退出时挂起的原因。 没有任何try / catch块或其他逻辑,代码为:
X509Store s= new X509Store(StoreName.My, StoreLocation.CurrentUser);
s.Open(OpenFlags.OpenExistingOnly);
X509Certificate2 cert = s.Certificates[0];
s.Close();
RSACryptoServiceProvider rsa = cert.PublicKey.Key as RSACryptoServiceProvider;
byte[] cryptedData = rsa.Encrypt(Encoding.UTF8.GetBytes("test"), true);
rsa = cert.PrivateKey as RSACryptoServiceProvider;
string x = Encoding.UTF8.GetString(rsa.Decrypt(cryptedData, true));
当我在按钮单击事件中运行代码时,系统会提示我输入USB令牌的PIN。在输入并确认PIN后,可以预料到变量x ==“ test”。因此,使用令牌进行加密和解密是可行的。
当我关闭表单时,应用程序将挂起,并且,如果我在VS2017中单击“全部中断”,甚至Visual Studio也将挂起。我的猜测是与usb令牌密码功能有关的某些东西没有发布/关闭。
我尝试过,没有任何运气,
Environment.Exit(0);
cert.Reset();
rsa.Clear();
rsa.Dispose();
cert.Dispose();
有什么想法吗? 谢谢。