0

我有以下设置,一个以其中可能有回车的数据命名的 textarea 和另一个style='display:none'为了使其隐藏的 textarea,如下所示:

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

用户在第一个文本区域输入数据,当该文本区域失去焦点时,'encryptMyData()' javascript 函数正在调用 ajax 调用以获取用户在第一个文本字段中输入的任何内容,使用 rijndael 对其进行加密,并将其粘贴到 encryptedText textarea 以便稍后将其存储在数据库中。

现在我需要做的是,找到一种方法将加密前的回车转换为标签,[cr]这样当我检索数据时,所有格式都会保留。知道我该怎么做吗?我正在使用 asp.net 和 c# 来执行加密。

4

3 回答 3

2

您的换行符可能仍存在于加密数据中。

如果您确实想“显示”保留换行符的加密数据,您可能需要执行stringData.Split(Environment.NewLine), 分别加密每个结果字符串,然后String.Join(Environment.NewLine, arrayOfEncryptedDataLines)在返回网页之前将这些字符串重新组合在一起。

-编辑-

不过,你最好不要去服务器。看看http://www.hanewin.net/encrypt/aes/aes.htm

于 2010-04-09T12:05:26.773 回答
1

您可以使用JavaScriptescape()方法来处理回车和空格。在服务器端,您需要再次对序列进行转义,但 C# 中没有默认的 unescape 方法。您可以尝试在命名空间中使用unescape 方法Microsoft.JScript.GlobalObject

于 2010-04-09T10:29:35.163 回答
0

基本上,对您的服务的 AJAX 调用可能会去除新行,因此您需要在调用 Web 服务之前进行转换。

在您的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 调用,而不是 textarea 的直接值。

于 2010-04-09T12:17:02.400 回答