【问题标题】:Cross Platform AES Encryption for .NET WCF, .NET CF, Android, Symbian适用于 .NET WCF、.NET CF、Android、Symbian 的跨平台 AES 加密
【发布时间】:2011-02-23 10:17:50
【问题描述】:

我在服务器上托管了 WCF 服务,需要接受来自各种移动平台(如 Windows Mobile、Symbian、Android、BlackBerry、iPhone 等)的加密值。

我无法获得 .NET 和所有其他移动平台的跨平台 AES 加密实施(大多数情况下,我得到 Padding is invalid and cannot be removed 错误)。

任何开发过适用于 .NET、.NET CF、Android、Symbian、BlackBerry、iPhone 等的加密解决方案的人?

【问题讨论】:

    标签: .net android encryption compact-framework symbian


    【解决方案1】:

    使用Bouncy Castle C# Cryptography APIs。它几乎拥有您需要的一切,并且可以在上述平台上工作(除了 Symbian 和 BB)。

    【讨论】:

      【解决方案2】:

      .Net、CF、Android 和 Spring WebServices 我的 2 美分:

      我能够使用 AES + CBC + PKCS5Padding 来解决问题

      在 .Net CF 中,您可以找到 System.Security.Cryptography.RijndaelManaged(您必须将块大小设置为 128,这很重要)。

      【讨论】:

      • RijndaelManaged 的​​问题在于它使用了 System.Security.Cryptography 中的 PasswordDerivedBytes,这在 .NET CF 中不可用。我尝试从 OpenNETCF 使用它,但它给出了与 System.Security.Cryptography 不同的结果。我能够在服务器 (.NET) 和 .NET CF 上使用 OpenNETCF 并且它有效。但是,对于其他移动平台,它不起作用。
      • 但它存在于 Mono 中。很少有改编使它适用于 CF 2.0。对不起,我忘记了那一步:/或者你可以看看 bouncycastle link
      • 感谢您的回复。我会调查并回复你。
      【解决方案3】:

      实施 AES 加密时需要注意的几个重要事项: 1.永远不要使用纯文本作为加密密钥。始终散列纯文本密钥,然后用于加密。 2.始终使用随机IV(初始化向量)进行加密和解密。真正的随机化很重要。

      我最近为 C#、iOS 和 Android 编写了跨平台的 AES 加密和解密库,已发布在 Github 上。你可以在这里看到 - https://github.com/Pakhee/Cross-platform-AES-encryption

      【讨论】:

      • 我尝试了适用于 iOS 和 C# 的库。而将数据从移动设备传递到后端 + 符号正在消失,并为加密文本添加了空间。
      • 在解密批量数据时,前 16 位数据仍处于加密格式,其他数据正在解密。
      • 在C#中加密和解密数据时出现一些问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 2012-01-30
      • 1970-01-01
      • 1970-01-01
      • 2015-12-29
      • 2011-11-22
      相关资源
      最近更新 更多