2013-06-06 4 views
1

Я использую класс RijndaelManaged .NET для шифрования и расшифровки строк. 3 разные строки сначала зашифровываются, а затем конкатенируются, разделяются по трубе (|), а затем эта строка сохраняется в базе данных.Используется ли зашифрованная строка AES | (Труба)?

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

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

StringBuilder sb = new StringBuilder(); 
sb.Append(Crypto.Encrypt("string1")).Append("|") 
.Append(Crypto.Encrypt("string2")).Append("|") 
      Crypto.Encrypt("string3")); 

Мой вопрос: При шифровании строки, используя RijndaelManaged, может зашифрованная строка включает знак трубы?

+0

Ой, подождите, когда вы добавите его после шифрования? – TheKingDave

+0

Не могли бы вы создать ссылку на этот метод шифрования, который вы вызываете? Я не могу найти его прямо. –

ответ

2

Я использую класс RijndaelManaged .NET для шифрования и расшифровки строк.

Вы можете использовать это как , лежащий в основе шифрования - но RijndaelManaged имеет дело только с двоичными данными, как это обычно бывает с кодом шифрования.

Предположительно, вы преобразовываете свою строку в байты (надеюсь, используя разумную кодировку, такую ​​как UTF-8), затем шифруете, а затем преобразуете зашифрованные байты обратно в строку.

Не зная, как вы преобразуете зашифрованные байты обратно в строку, мы не можем знать, будут ли результаты включать |. Если вы используете Convert.ToBase64String (что, вероятно, я буду использовать), все будет хорошо, так как | не используется в обычном алфавите base64. То же самое, если вы просто конвертируете каждый байт в две шестнадцатеричные цифры. Но, возможно, вы делаете что-то еще. (Если вы используете Encoding, вы, кстати, делаете это неправильно и можете легко потерять данные.)

+0

Я использую этот точный код: http://msdn.microsoft.com/en-us/library/system.security.cryptography.rijndaelmanaged.aspx –

+0

@ Ivan-MarkDebono: Ну, это шифрует строку в * bytes * , а не на строку. Итак, как вы можете «конкатенировать» их с помощью '|'? Похоже, у вас есть дополнительный шаг преобразования из байтов в строку, но вы не сказали нам, как это сделать. –