2016-11-04 138 views
1

我是新的iOS swift 3开发。现在,我正在开发一个需要加密,消息认证代码(MAC)和Hashed-base-MAC的项目。这些算法需要密钥。我知道,这是一个不好的做法,硬代码里面的代码键,如:swift3 - 如何保护密钥

let key = "secretkeyabc123" 

搜索和阅读像一些文章: In iOS, how can I store a secret "key" that will allow me to communicate with my server?

因为其他人可以进行逆向工程,我找到一种方法来保护我的钥匙。要求:

  1. 没有哈希键。时间允许破解它,或与散列表和字典
  2. 可能无法连接到互联网(我的应用程序是一个离线应用程序。如果您的答案需要连接到互联网。是的,请指出它,我会考虑它)
  3. 这是一个静态键。它可能每月更改
  4. 这是一个对称密钥。

欢迎使用代码,概念或其他东西。谢谢!

+0

“时间允许破解它”如果你担心在宇宙寿命的时间量的时间量,那么我想是的。 – Alexander

回答

0

根本不存储密钥。执行Diffie-Hellman密钥交换以启动非对称加密通道,并使用此通道通过对称密钥向客户端发送,以供客户端随后使用。

0

检查iCloud Keychain(基于您的标签[ios],[swift],[key])。

它充当安全数据库,允许安全存储用户的网站登录密码,Wi-Fi网络密码,信用卡/借记卡管理(尽管无CVV)和其他帐户数据等信息,以便快速访问和当用户需要即时访问它们时,自动填充网页和其他地方。它们始终使用256位AES加密进行存储,存储在设备上并在设备之间从iCloud推送,并且只能在用户的可信设备上使用。