我有以下设置,一个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#来执行加密。
答案 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的直接值。