【问题标题】:Encrypt a string with C# and decrypt it on iOS and Android用 C# 加密字符串并在 iOS 和 Android 上解密
【发布时间】:2015-03-04 04:51:54
【问题描述】:

我正在使用 C# 和 .NET Framework 4.0 开发 WCF Web 服务。我也在开发一个 iOS 和 Android 客户端来连接它。

在服务器端,我必须生成一个随机密码,对其进行加密,然后将其发送回 iOS 客户端或 Android 客户端。

我不知道如何使用 .NET Framework 加密字符串。在网上搜索,我看到有算法可以做到:MD5,RSA等。(我不确定我是否了解如何加密字符串,因为我还没有进行字符串加密)。

如果我使用 MD5 加密密码,在 iOS 和 Android 上我需要做什么来解密它?

你有什么推荐给我的?

【问题讨论】:

  • 使用 SSL 加密连接。比你自己建造的任何东西都要强大得多。
  • @CodesInChaos 我想在数据库以及 iOS 和 Android 设备上存储加密的密码。
  • 对于传输,请以 SSL 格式发送密码(不要忘记验证服务器证书)。对于数据库,使用专门的密码散列(PBKDF2、bcrypt 或 scrypt)。有关详细信息,请参阅How to securely hash passwords?。在 .net 中,最简单的哈希是 Rfc2898DeriveBytes,迭代次数约为 20000 次,这是 PBKDF2-HMAC-SHA-1 的实现。

标签: c# .net


【解决方案1】:

在 .Net 中加密字符串很容易。您可以使用内置的 System.Security.Cryptography.MD5。

这是一个链接:http://msdn.microsoft.com/en-us/library/system.security.cryptography.md5.aspx

这是一个与您的关于语言之间加密/解密的问题非常相似的问题。mfanto 有一个很好的答案。

Best practices for passing encrypted data between different programming languages

【讨论】:

  • 感谢您的回答,但我找不到非常相似的问题。
  • @VansFannel 抱歉,忘记发链接了 :(
  • .net 中的加密非常困难。它只提供低级功能。很难将它们组合成一个安全的方案。在这种情况下,MD5 显然是一个糟糕的选择。
  • 我同意你的观点,但他的问题是如何使用 MD5 在 .Net 中加密字符串,所以我回答了这个问题。
【解决方案2】:

问题是您的加密必须有多严重? MD5 不是什么严肃的事情。至于 RSA,您应该考虑到这是一种使用一对公钥和私钥的异步加密方法。根据您的目标,可以说 RSA 是否适合您。当然,如果你开发一些严肃的东西,千万不要使用公共库进行加密(包括 MS)。

【讨论】:

    【解决方案3】:

    我使用 CommonCrypto 编写了 RSA 和 AES 实现,实现是为了与 .NET 互操作

    看看

    https://github.com/ozgurshn/EncryptionForiOS

    【讨论】:

      【解决方案4】:

      在 .net 中创建关键字的 md5 哈希很容易:

      MD5 hashKey = new MD5CryptoServiceProvider();
      var hashedKey = hashKey.ComputeHash(ASCIIEncoding.ASCII.GetBytes("password"));
      

      注意:散列键是字节数组,您可以从中构建一个字符串或进行进一步加密(例如更改为数字,将其转换为十六进制...)。你需要using System.Security.Cryptography;

      在 Ios/Android 上,您必须这样做,使用 MD5 算法加密字符串(这总是相同的,这就是它起作用的原因)并比较两个结果。

      【讨论】:

      • 但这至少在四种不同的方面是个坏主意。 1)速度很快。您需要使用慢速迭代方案,如 scrypt、bcrypt 或 PBKDF2。 2)它没有盐 3)它默默地破坏非 ASCII 密码 4)虽然 MD5 在这种情况下没有被破坏,但仍然最好使用像 SHA-2 这样更强的哈希(作为 PBKDF2 中的构建块)
      • @CodesInChaos 我知道......我刚刚发布了一个如何使用 md5 的示例(这是基本问题)。当然这不能是完整的解决方案,包括。盐等。但我在第 3 点同意你的看法……没想到。
      猜你喜欢
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多