我正在使用.NET的RijndaelManaged类来加密和解密字符串。首先对3个不同的字符串进行加密,然后连接,用管道(|)分隔,然后将此字符串保存回数据库。
当我需要解密字符串时,我首先将三个加密字符串分开,然后解密它们。
我按如下方式连接各个加密字符串:
StringBuilder sb = new StringBuilder();
sb.Append(Crypto.Encrypt("string1")).Append("|")
.Append(Crypto.Encrypt("string2")).Append("|")
Crypto.Encrypt("string3"));
我的问题是: 使用RijndaelManaged加密字符串时,加密字符串是否可以包含管道符号?
答案 0 :(得分:2)
我正在使用.NET的RijndaelManaged类来加密和解密字符串。
您可能将其用作底层加密 - 但RijndaelManaged仅处理二进制数据,通常是加密代码的情况。
所以假设你将你的字符串转换成字节(希望使用合理的编码,如UTF-8),然后加密,然后将加密的字节转换回字符串。
在不知道 的情况下,您将加密的字节转换回字符串,我们无法知道结果是否包含|
。如果您正在使用Convert.ToBase64String
(可能就是我使用的那样),那么您将没事,因为|
未在正常的base64字母表中使用。如果您只是将每个字节转换为两个十六进制数字,那么同上。但也许你正在做别的事情。 (如果您使用Encoding
,那么顺便说错了,很容易丢失数据。)