Это метод для шифрования текста и возвращает зашифрованный текст:C метод # шифрования не работает
public static string Encrypt(this string clearText, CryptologyMethod method)
{
ICryptoTransform cryptoTransform = null;
switch (method)
{
case CryptologyMethod.TripleDes:
cryptoTransform = new TripleDESCryptoServiceProvider().CreateEncryptor(Config.TripleDesKey, Config.TripleDesIV);
break;
case CryptologyMethod.AES:
cryptoTransform = new AesCryptoServiceProvider().CreateEncryptor(Config.AesKey, Config.AesIV);
break;
}
using (MemoryStream memoryStream = new MemoryStream())
{
using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptoTransform, CryptoStreamMode.Write))
{
using (StreamWriter streamWriter = new StreamWriter(cryptoStream))
{
streamWriter.Write(clearText);
cryptoStream.FlushFinalBlock();
return memoryStream.Text();
}
}
}
}
public enum CryptologyMethod
{
TripleDes,
AES
}
Text()
является метод расширения, чтобы прочитать содержимое потока:
public static string Text(this Stream stream)
{
return new StreamReader(stream).ReadToEnd();
}
Кроме того, Config.TripleDesKey
и другие свойства возвращают массив байтов, считанных из файла конфигурации.
Проблема заключается в том, что, когда я использую этот метод расширения, то результат всегда пустая строка:
строка зашифрованного текста = «некоторые чистый текст» .Encrypt (CryptologyMethod.TripleDes); // cipherText пуст
Пожалуйста, почему downvote? –
Я не спускал вниз - но: в чем проблема? ошибка компилятора? «неправильное» шифрование? – Yahia
Для кого-то, у которого почти 5 тыс. Репутации, вы не знаете, как задать вопрос. Какова ошибка, каков вход, каков ожидаемый результат? Вы понимаете, что вам нужно сбросить свою позицию после заполнения? – leppie