2010-04-09 2 views
0

я это следующие установки, текстовое имя с некоторыми данными в нем, которые могут иметь возврат каретки и еще текстовое поле, которое имеет style='display:none' для того, чтобы сделать его скрытым следующим образом:Как я могу сохранить возврат каретки, когда я шифрование данных?

<textarea id="myTextarea" onBlur="encryptMyData()"></textarea> 
<textarea name="encryptedText" style='display:none'></textarea> 

пользователя вводит данные в первом текстовое поле и когда текстовая область теряет фокус на «encryptMyData()» JavaScript функция вызывает вызов AJAX принять все введенные пользователем в первом текстовом поле, шифрует его с помощью Rijndael, и вставьте его в текстовое поле encryptedText так, что она хранится в база данных позже.

Теперь мне нужно сделать это, найти способ конвертировать возврат каретки до шифрования в тег, такой как [cr], чтобы при получении данных все форматирование сохранялось. Любая идея, как я это делаю? Я использую asp.net и C# для выполнения шифрования.

+0

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

+1

Не могли бы вы отправить код вашего метода шифрования в C#? Я думаю, вам просто нужно сделать простую строку. Замените() перед шифрованием. –

ответ

1

Вы можете использовать JavaScript escape() method, чтобы заботиться о возврат каретки и пробелы. Серверные вам нужно последовательность экранирования в снова, но нет никакого способа по умолчанию присутствует экранирования в в C#. Вы можете попробовать использовать unescape method in the Microsoft.JScript.GlobalObject namespace.

2

Ваши символы новой строки, вероятно, все еще присутствуют в зашифрованных данных.

Если вы абсолютно хотите «дисплей» зашифрованные данные с новой строкой нераспределенных, вы, вероятно, нужны сделать stringData.Split(Environment.NewLine), шифрование каждой результирующей строки отдельно, а затем String.Join(Environment.NewLine, arrayOfEncryptedDataLines) строки вместе, прежде чем вернуться на веб-страницу.

-edit-

Вы могли бы быть лучше не будет сервером, хотя. Посмотрите на http://www.hanewin.net/encrypt/aes/aes.htm

+0

Я бы не побоялся делать что-то связанное с безопасностью (как, например, шифровальный текст) в клиентском коде. Но отличная ссылка, тем не менее, и спот-на остальной части ответа. – Dathan

0

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

В вашей encryptMyData функции выполнить замену, прежде чем отправить его на сервере:

// assuming sometext contains the contents of myTextarea 
// Perform a global replace for all occurrences of a new line with [CR]: 
sometext = sometext.replace(/\n/g, "[CR]"); 

Затем пройти SOMETEXT на вызов Ajax, а не прямое значения текстового поля.