这很奇怪。我有这个方法来加密的字符串: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