1

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

当我需要对字符串进行解密时,我先将三个加密的字符串分开,然后再解密。

我将各个加密字符串连接起来,如下所示:

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

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

4

1 回答 1

2

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

您可能将其用作基础加密 - 但 RijndaelManaged 仅处理二进制数据,就像加密代码通常一样。

因此,大概您正在将字符串转换为字节(希望使用诸如 UTF-8 之类的合理编码),然后进行加密,然后将加密的字节转换回字符串。

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

于 2013-06-06T08:04:31.353 回答