Я знаю, что есть несколько вопросов, связанных с этим, однако большинство ответов предоставляют решения для .net 4.0 и выше. Для моего использования я должен нацелиться на .net 3.5. Я хочу просто зашифровать и расшифровать строку для хранения в файле, рассматриваемый текст не является конфиденциальной пользовательской / личной информацией.
Код, который у меня пока есть,
public static string EncryptString(this string text)
{
string result = null;
if(!String.IsNullOrEmpty(text))
{
byte [] plaintextBytes = Encoding.Unicode.GetBytes ( text );
SymmetricAlgorithm symmetricAlgorithm = DES.Create ();
symmetricAlgorithm.Key = new byte [8] { 1, 2, 3, 4, 5, 6, 7, 8 };
MemoryStream memoryStream = new MemoryStream ();
CryptoStream cryptoStream = new CryptoStream ( memoryStream, symmetricAlgorithm.CreateEncryptor (), CryptoStreamMode.Write );
cryptoStream.Write ( plaintextBytes, 0, plaintextBytes.Length );
result = Encoding.Unicode.GetString ( memoryStream.ToArray () );
}
return result;
}
и
public static string DecryptString(this string text)
{
string result = null;
if ( !String.IsNullOrEmpty ( text ) )
{
byte [] encryptedBytes = Encoding.Unicode.GetBytes ( text );
SymmetricAlgorithm symmetricAlgorithm = DES.Create ();
symmetricAlgorithm.Key = new byte [8] { 1, 2, 3, 4, 5, 6, 7, 8 };
MemoryStream memoryStream = new MemoryStream ( encryptedBytes );
CryptoStream cryptoStream = new CryptoStream ( memoryStream, symmetricAlgorithm.CreateDecryptor (), CryptoStreamMode.Read );
byte [] decryptedBytes = new byte [encryptedBytes.Length];
cryptoStream.Read ( decryptedBytes, 0, decryptedBytes.Length );
result = Encoding.Unicode.GetString ( decryptedBytes );
}
return result;
}
Шифрование работает, но при попытке расшифровки я получаю эту ошибку:
CryptographicException: Bad PKCS7 padding. Invalid length 0.