2011-01-04 3 views
1

Q:класс шифрования и дешифрования?

Я хочу спросить, если есть класс для шифрования и дешифрования строки, я поиск через сеть ,, и я найти некоторые, но они менее безопасны или имеют некоторые проблемы в завершении процесса:

один из классов я нашел перед:

public static string Encrypt(string text) {

 try 
     { 
      key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8)); 
      DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 
      Byte[] byteArray = Encoding.UTF8.GetBytes(text); 
      MemoryStream memoryStream = new MemoryStream(); 
      CryptoStream cryptoStream = new CryptoStream(memoryStream,des.CreateEncryptor(key, IV), CryptoStreamMode.Write); 
      cryptoStream.Write(byteArray, 0, byteArray.Length); 
      cryptoStream.FlushFinalBlock(); 
      return Convert.ToBase64String(memoryStream.ToArray()); 
     } 

     catch (Exception ex) 
     { 
      string message = ex.Message; 
     } 

     return string.Empty; 
    } 



    public static string Decrypt(string text) 
    { 
     try 
     { 
      key = Encoding.UTF8.GetBytes(stringKey.Substring(0, 8)); 
      DESCryptoServiceProvider des = new DESCryptoServiceProvider(); 

      Byte[] byteArray = Convert.FromBase64String(text); 
      MemoryStream memoryStream = new MemoryStream(); 
      CryptoStream cryptoStream = new CryptoStream(memoryStream, 
      des.CreateDecryptor(key, IV), CryptoStreamMode.Write); 
      cryptoStream.Write(byteArray, 0, byteArray.Length); 
      cryptoStream.FlushFinalBlock(); 
      return Encoding.UTF8.GetString(memoryStream.ToArray()); 
     } 

     catch (Exception ex) 
     { 
      string message = ex.Message; 


     }` 

некоторые комментарии по поводу этого класса:

я искать о классе, чтобы выполнить шифрование и дешифрование без этих проблем ,, если есть какие-либо изменения или аксессуара к этому классу, чтобы избежать тех, проблемы и сделать его более безопасным, это будет здорово.

, если есть и другие классы, которые испытаны и используются в течение длительного времени, чтобы убедиться в его стабильности, это будет большой ..

+1

Хорошо, этот класс достаточно безопасен ... для чего-то (читайте: SUCKS). То, что вы хотите обеспечить и от чего? Пароли? Или что-то другое? Кроме того, какие «другие проблемы» вы хотите избежать? И из любопытства, что случилось с Encoding.UTF8.GetBytes? –

+0

Совет: используйте инструкцию 'using'. –

+0

Я использую его дважды один раз для паролей, а другое время для строки исходит из строки запроса, одна из самых больших проблем была недопустимой 64-разрядной ошибкой массива символов, и я думаю, что она решена с помощью кодирования перед шифрованием и декодирования перед расшифровкой. но я боюсь будущих проблем –

ответ

2

Этот код нигде не достаточно хорош для паролей.

Позвольте мне процитировать слова Джеффа из ужаса статьи Coding вы связаны с:

Вы никогда не должны, когда-либо паролей магазин пользователя. Если вы это сделаете, вы неправильно храните пароли. Всегда храните засоленный хэш пароля - никогда не пароль сам! Это так просто, даже члены Mensa er .. не могут ... понять это.

Пароли не должны храниться таким образом, чтобы их можно было восстановить. Неважно, зашифруйте ли вы его. Шифрование - это двусторонний процесс. Вы должны сделать одностороннее преобразование, из которого вы не сможете восстановить исходный пароль. Как предлагает Джефф, используйте hashing с salt. Чтобы проверить пароли, вы применяете один и тот же односторонний процесс к входу и сравниваете с сохраненным вами значением. You never восстановить сохраненный пароль для сравнения с вводом.

+0

Я прочитал его после того, как я использую этот класс. Так что я спрашиваю. –

 Смежные вопросы

  • Нет связанных вопросов^_^