【问题标题】:Does an AES encrypted string include | (pipe)?AES 加密字符串是否包含 | (管道)?
【发布时间】:2013-06-06 07:57:24
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 哦,等一下,你的意思是在加密后添加它?
  • 您能否创建一个指向您正在调用的 Encrypt 方法的链接?我无法直接找到它。

标签: c# aes rijndaelmanaged


【解决方案1】:

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

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

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

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

【讨论】:

  • 我使用的是完全相同的代码:msdn.microsoft.com/en-us/library/…
  • @Ivan-MarkDebono:嗯,它会将字符串加密为 bytes,而不是字符串。那么如何将它们与|“连接”起来呢?听起来您已经获得了将字节转换为字符串的额外步骤,但您还没有告诉我们如何操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
  • 1970-01-01
  • 2011-04-20
  • 2011-08-24
相关资源
最近更新 更多