Как сохранить возврат каретки при шифровании данных? - PullRequest
0 голосов
/ 09 апреля 2010

У меня есть следующие настройки: текстовая область, названная с некоторыми данными, которые могут иметь возврат каретки, и другая текстовая область с style='display:none', чтобы скрыть ее следующим образом:

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

пользователь вводит данные в первую текстовую область, и когда эта текстовая область теряет фокус, функция javascript 'encryptMyData ()' вызывает ajax-вызов, чтобы взять все, что пользователь ввел в первое текстовое поле, зашифровать его с помощью rijndael и вставить его в текстовом поле encryptedText, чтобы оно позже сохранялось в базе данных.

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

Ответы [ 3 ]

2 голосов
/ 09 апреля 2010

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

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

-edit-

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

1 голос
/ 09 апреля 2010

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

0 голосов
/ 09 апреля 2010

По сути, вызов 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]");

Затем передайте некоторый текст в вызов ajax, а не прямое значение текстовой области.

...