使用字符串和二进制数据实现AesManaged

时间:2012-05-06 02:35:02

标签: c# .net aes

我正在尝试在我的C#类库中实现AesManaged,并且不熟悉加密需要一些成熟的指导。我一直在查看this MSDN example并将字符串加密为二进制,然后将二进制文件解密回字符串。

我如何调整它以支持字符串到字符串和二进制到二进制的实现?

  • 某些配置数据需要作为加密字符串存储在XML文件和注册表中。
  • 需要将一些较大的易失性数据加密为二进制文件。

由于这是一项艰巨的任务,我认为最好不要依赖假设。不知道Aes如何运作,我的要求就像获取Encoding.ASCII.GetStringEncoding.ASCII.GetBytes一样简单?

1 个答案:

答案 0 :(得分:3)

是的,这基本上就是你“需要”做的事情。将字符串转换为字节数组并加密。加密的结果虽然不是“友好”的字符串。它主要是不可读的ASCII。如果要将结果存储在XML文件中,则可能需要使用ToBase64将加密的输出存储为Base64。当您重新读取值时,您将需要从base64转换并解密。

根据您所需的安全级别,仅使用AES通常是不够的。 AES将提供机密性(无法读取消息),但不提供完整性(修改加密数据)。使用HMAC之类的内容会告诉您是否有人篡改了数据,即使他们无法读取数据。