【问题标题】:How would I encrypt a string on IOS and decrypt in windows?如何在 IOS 上加密字符串并在 Windows 中解密?
【发布时间】:2014-09-02 15:12:38
【问题描述】:

我想加密一个字符串(密码):

  • iOS 设备(在 Objective C 中)
  • Android 设备(Java 语言)
  • Windows 手机(C# 语言)

...然后通过 http 将该字符串发送到将解密它的 Windows 服务器(在 C# 中)。

是否有一些实用程序/库/加密引擎能够完成这样的任务?

您能否提供以下示例代码:

  • iOS 设备(在 Objective C 中)
  • Android 设备(Java 语言)

谢谢

【问题讨论】:

  • 你真的不应该让别人写你的代码。解决问题,遇到困难时寻求帮助。
  • 您将面临的问题是关键是数据,应该是正确的长度,对于 iv.使用相同的模式 (CBC) 和填充 (PKCS7)。如果密钥是字符串,请使用 PBKDF2 从中创建数据密钥。如果您需要在 ASCII 环境中传输加密数据,请使用 Base64 编码。
  • 如果我对 ios 或 Java 有所了解...我会...(请注意 C# 方面没有“帮助我”... :-)
  • 您是否考虑过使用 SSL/TLS (HTTPS)?在您的 Windows 端进行一些简单的配置,并在您的 HTTP 请求中将您的 HTTP 更改为 HTTPS,您就可以避免自己处理所有这些(这意味着更少的工作并且可能会更安全)
  • HTTPS 和 SSL 加密数据。它们还提供一定级别的身份验证。如果您在加密安全知识有限的情况下自行执行此操作,那么它很可能不安全。

标签: c# android ios windows-phone-8 encryption


【解决方案1】:

如果您使用标准加密算法(例如 AES256),并且所有平台都有相应的密钥,那么这应该不是问题。

考虑使用CommonCrypto on iOS

Android 上的示例

System.Security.Cryptography 在 Windows Phone / Windows Server 上

但是,您要解决的问题是什么?如果您想加密传输中的数据,为什么不使用带有 SSL 证书的 HTTPS?

【讨论】:

  • 所以大端和小端没有问题?能否提供ios和android的示例代码?
  • 加密是面向字节的,它没有任何更大的概念,因此不存在字节序问题。以 UTF-8 编码的字符串也没有字节序。
  • +1 - 特别是对于 HTTPS 建议 - 正确实施安全通信非常困难,而且很难证明不使用现有实施(缺乏个人娱乐目标,但需要在问题中说明)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-24
  • 2016-12-25
相关资源
最近更新 更多