AES加密字符串是否包含| (管)?

时间:2013-06-06 07:57:25

标签: c# aes rijndaelmanaged

我正在使用.NET的RijndaelManaged类来加密和解密字符串。首先对3个不同的字符串进行加密,然后连接,用管道(|)分隔,然后将此字符串保存回数据库。

当我需要解密字符串时,我首先将三个加密字符串分开,然后解密它们。

我按如下方式连接各个加密字符串:

StringBuilder sb = new StringBuilder();
sb.Append(Crypto.Encrypt("string1")).Append("|")
.Append(Crypto.Encrypt("string2")).Append("|")
          Crypto.Encrypt("string3"));

我的问题是: 使用RijndaelManaged加密字符串时,加密字符串是否可以包含管道符号?

1 个答案:

答案 0 :(得分:2)

  

我正在使用.NET的RijndaelManaged类来加密和解密字符串。

您可能将其用作底层加密 - 但RijndaelManaged仅处理二进制数据,通常是加密代码的情况。

所以假设你将你的字符串转换成字节(希望使用合理的编码,如UTF-8),然后加密,然后将加密的字节转换回字符串。

在不知道 的情况下,您将加密的字节转换回字符串,我们无法知道结果是否包含|。如果您正在使用Convert.ToBase64String(可能就是我使用的那样),那么您将没事,因为|未在正常的base64字母表中使用。如果您只是将每个字节转换为两个十六进制数字,那么同上。但也许你正在做别的事情。 (如果您使用Encoding,那么顺便说错了,很容易丢失数据。)