Доброе всем время суток!
Подключил к своему приложению шифрование, т.е. при открытии сессии формируется симметричный ключ и вектор, зашифровывается открытым ключом пользователя и отправляется ему. Пользователь получая пакет расшифровывает ключ сессии и дальнейший обмен пакетами идет с использование симметричного ключа. Все работало прекрасно, пока приложение не установили на 98 Windows. Программа корректно формирует ключи, обменивается, но вот как только пытаешься использовать асимметричные ключи происходит ошибка при выполнении операции Decrypt.
static public void DecryptSymerticKey(Hashtable ht)
{
try
{
byte[] EncryptedSymmetricKey=(byte[])ht["Key"];
byte[] EncryptedSymmetricIV=(byte[])ht["IV"];
CspParameters rsParams = new CspParameters();
rsParams.Flags = CspProviderFlags.UseMachineKeyStore;
rsParams.KeyContainerName = "MyStore";
RSACryptoServiceProvider rsaCSP = new RSACryptoServiceProvider(rsParams);
rsaCSP.PersistKeyInCsp = true;
//после выполнения следующей операции возникает ошибка:
// Unknown failure; unable to generate error message.
byte[] SessionKey = rsaCSP.Decrypt(EncryptedSymmetricKey, false);
byte[] SessionIV = rsaCSP.Decrypt(EncryptedSymmetricIV, false);
}
catch (CryptographicException cEx)
{
throw new Exception("Ошибка при инициализации провайдера. ");
}
}
Все перерыл, но не могу найти в чем может быть дело. Симметричное шифрование идет нормально. Пытался сохранять ключи и в бинарном файле. Поднимал на других платформах — все работает, поднимаешь на 98 — нет. Может кто сталкивался???? Помогите советом.