程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 我理解的.net Framework 2.0 RSA加密

我理解的.net Framework 2.0 RSA加密

編輯:關於.NET

這裡我必須總結一下,因為RSACryptoServiceProvider 引發的異常快使我瘋掉了!

代碼:

WindowsIdentity wi = Logon(UserName, Password);
if (null != wi) {
WindowsImpersonationContext wic = wi.Impersonate();
CspParameters cp = new CspParameters();
cp.ProviderType = 1;
cp.Flags = CspProviderFlags.UseMachineKeyStore;
cp.KeyNumber = (int)KeyNumber.Exchange;
cp.KeyContainerName = "KEY_1";
RSACryptoServiceProvider csp = new RSACryptoServiceProvider( cp);
this.txtPublicKey.Text = this.PublicKey = csp.ToXmlString(false);
csp.Clear();
wic.Undo();

我最先遇到:

System.Security.Cryptography.CryptographicException,發生位置是aspnet_wp.exe(1128)----------->windows XP

System.Security.Cryptography.CryptographicException,發生位置是w3wp.exe------------------>windows Server 2003

症狀:是我用了加密算法後,把應用掛在IIS上,就時不時報如上錯。

解決:

while impersonated and dont clean up the keys of the RSACryptoProvider using the clear method while impersonated.

解決步驟:

Impersonateuser

Create a new RSACryptoServiceProvider (pair)

Encrypt or Decrypt your data

Call clear to release the keys (pair.Clear())

Undo impersonation

2.當 RSACryptoProvider 創建了密鑰文件但由於權限不足而無法刪除該密鑰文件時,會導致此錯誤;

解決:

若要更正此錯誤,請確認代理服務帳戶對“Documents and Settings”文件夾中 RSA 計算機密鑰文件夾(例如,C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA)的“完全控制”權限設置為“允許”。

我以為RSA加密解密問題就此終結,結果。。。。

異常:

System.Security.Cryptography.CryptographicException:該項不適於在指定狀態下使用。

這個問題這個問題為難死我了!

這個問題是客戶機子上出現的,而我身邊所有的機子都沒有過。

從何下手!客戶那裡不可以遠程訪問,就別提調試了。

問問他們的環境有無變化:?

------重裝過產品

我想問題就應該出在產品身上,因為我加密的時候,模擬用戶是我們公司產品建立的一個帳戶。

我又找啊找啊,終於找到了原因!

The most common issue in this area occurs when a local (non-domain) user's

password is administratively reset. On WinXP or 2K3, this causes all data protected

by DPAPI (including user private keys) to be lost; at least until the

password is set back. This is by design, and in fact is an important

security feature

解決:

方案一:將模擬帳戶的密碼恢復到以前的那個密碼;

方案二:C:\Documents and Settings\%userName%\Application Data\Microsoft\的Crypto目錄給刪掉。

哈哈,問題到此暫時結束了。

如果對你有幫助的話,記得頂一下哈

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved