我在加密数据时如何保留回车?

时间:2010-04-09 10:20:04

标签: c# asp.net javascript html-form rijndael

我有以下设置,一个textarea,其中包含一些可能有回车符的数据,另一个textarea有style='display:none',以便隐藏如下:

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

用户在第一个textarea中输入数据,当该文本区域失去焦点时,'encryptMyData()'javascript函数调用ajax调用来接受用户在第一个文本字段中输入的内容,使用rijndael对其进行加密,然后粘贴它在encryptedText textarea中,以便以后存储在数据库中。

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

3 个答案:

答案 0 :(得分:2)

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

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

-edit -

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

答案 1 :(得分:1)

您可以使用JavaScript escape() method来处理回车和空格。服务器端你需要再次取消序列,但C#中没有默认的unescape方法。您可以尝试使用unescape method in the Microsoft.JScript.GlobalObject namespace

答案 2 :(得分: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的直接值。