【问题标题】:Is encryption in C# cross platform in mono?C# 中的加密是单声道的跨平台吗?
【发布时间】:2016-07-21 16:08:10
【问题描述】:

.NET 中的安全加密类在单声道运行时是否可用? (特别是在 Mac 等上使用单声道运行时的单声道游戏实现)

我最感兴趣的是我是否可以使用 [AES] (https://msdn.microsoft.com/en-us/library/system.security.cryptography.aes(v=vs.110).aspx) 类,因为我以前使用过它。

我是否能够加密字符串(例如配置数据)以对其进行混淆,然后将其保存为文件,然后再将其解密回程序中。

【问题讨论】:

  • 问个问题,你将如何保密加密密钥?
  • 我还不知道最佳实践。只是为了让它工作,它将在源代码中,但我知道发布的产品是个坏主意。
  • 定义你的威胁模型,从好奇的青少年到资金充足的国家,它们定义了攻击者、用户和你自己的价值。之后,您将对所需的安全性有更好的了解。它可能会证明它在源代码中是否满足您的需求。请记住,没有 100% 安全的解决方案。如果这是在服务器上,则如果您拥有服务器,则可以更轻松地防御广告,您可以添加低端 HSM,或者服务器中可能包含 TPM。

标签: c# mono cross-platform monogame


【解决方案1】:

是的......您可以在单支持平台(例如 MacOS)上使用这些类 :)

https://developer.xamarin.com/api/type/System.Security.Cryptography.Aes/

edit:@zaph 在 cmets 中提出了一个很好的观点……有一些库,例如 PCLCrypto,正是出于这个原因,它们在每个平台上都使用了本机库:)

【讨论】:

  • 如果您使用这些 iOS 或 macOS,性能会比使用 Apple Common Crypto 功能差得多。根据实现和平台的不同,它们的速度可能会慢 1000 倍。 iPhone 6s 可以使用 Common Crypto 以 430 MB/s 的速度进行加密,对 Mono 类进行基准测试。
  • 好点 @zaph ... 更新了答案以包含指向考虑到这一点的优秀库的链接。
  • PCLCrypto 是否使用通用加密库?特别是它是否使用了 iPhone 硬件加密引擎?
  • 副手,我不能告诉你......但是如果你阅读了项目的 README,它提到 PCL 本身实际上并没有实现任何加密,所以它使用的是本地库(搜索代码SecurityLibrary 在代码中查看它在 ios 上手动绑定到哪些 API)
  • 我下载了这个项目并搜索了“CommonCrypto”、“CCCrypt”(对称加密函数,它是一个“C”),但什么也没找到,所以我怀疑它使用的是 Common Crypto。基准是为了验证 AES 的性能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 1970-01-01
相关资源
最近更新 更多