這很奇怪。我有這個方法來加密的字符串:System.Security.Cryptography.CryptographicException:對象已存在
[System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Assert, Unrestricted = true)]
public static string Encrypt(this string stringToEncrypt, string key) {
var cspp = new CspParameters {
KeyContainerName = key,
Flags = CspProviderFlags.UseMachineKeyStore
};
var rsa = new RSACryptoServiceProvider(cspp) {
PersistKeyInCsp = true
};
var bytes = rsa.Encrypt(System.Text.Encoding.UTF8.GetBytes(stringToEncrypt), true);
return BitConverter.ToString(bytes);
}
這是我的客戶:
private const string EncryptionKey = "pezhman";
static Random random = new Random();
public static int CreateSalt() {
return random.Next(1000, 9999);
}
public void EncryptSomething() {
var salt = CreateSalt();
var plainText = salt + "," + DateTime.Now;
var encryptionSaltKey = EncryptionKey + DateTime.Now.Date;
// here im calling encryptor:
var encryptedValue = plainText.Encrypt(encryptionSaltKey);
}
我在ASP.NET MVC 4應用程序中使用此。它工作完美;但突然停止工作。其實,在當地,我沒有問題,它的工作。但是,當我發表我的代碼到服務器,我得到這個錯誤:
System.Security.Cryptography.CryptographicException: Object already exists.
你有任何想法,這裏發生了什麼?我知道我可以grant access to the key to everyone
。 我在問什麼是,在服務器上發生了什麼?什麼改變了?什麼樣的改變會導致這個問題?
你已經看過這個嗎? http://stackoverflow.com/questions/11430966/system-security-cryptography-cryptographicexception-object-already-exist/11445029#11445029 – rodrigogq 2014-11-24 15:51:28
@rodrigogq是的我已經在我的問題中提到過。我想知道服務器發生了什麼?什麼樣的改變會導致這個問題? – 2014-11-24 15:54:12
對不起,我以前沒有鏈接過鏈接。在此提供一些背景知識:你剛剛改變了你的應用程序嗎?任何Windows更新安裝,什麼IIS?您的AppPool使用任何特定用戶還是默認值?有人改變了嗎? – rodrigogq 2014-11-24 16:03:54