针对初学者的AES加密/解密

时间:2013-02-13 17:37:19

标签: objective-c encryption aes rncryptor

我正在尝试在Objective-C中将NSString加密到NSString和NSData,所以我开始搜索。

我开始here,但不幸的是,这已经超出了我的想法。

然后我发现自己at this post并且它很容易理解,所以我一直试图找出implementation。在查看了实现后,我在帖子中看到了第二个答案,看到他有更多适应性的实现,这使我进入his gist。根据要点自述,他"took down this Gist due to concerns about the security of the encryption/decryption"。这使我相信从上面实施的安全性也存在安全漏洞。

然而,从那个要点,他提到我可以用于加密的another alternative。在看了代码之后,我注意到它生成了"a header, encryption salt, HMAC salt, IV, ciphertext, and HMAC"的NSData。我知道如何处理它再次使用相同的库进行解码,但是如果我不知道我发送给他的是什么,我将如何将其传递给服务器人呢?

在这一切的根源,我在我的脑海里。鉴于我上面所说的并且知道我没有时间对此进行大量的学习,除非绝对必要,我应该如何最好地处理这个编码/解码过程,给定一个私钥将它运送到非我设计的服务器的最终目标是什么? (对于一个句子来说,这是怎么回事!)

1 个答案:

答案 0 :(得分:3)

也许你应该问服务器的人?当你在太多派对之间进行加密时,你必须对这些数据的格式有一些协议,原始基元不能单独处理它,更不用说它很容易搞砸安全性明智处理原语和只发送aes密文的愿望会导致错误。

你提到的

RNCryptor是一个高级加密库,它定义了simple format,其他人也必须遵守它,它很简单,因此有助于跨越平台,但它有额外的你需要正确地做AES。还有其他类似的库(NaCLGPGMEKeyczar),它们的格式不是很简单,但使用简单,所以你需要能够在两端使用库,但我强烈建议您使用类似的东西,如果可以的话,而不是自己动手。

Keyczar特别适用于java,python,c ++,c#和go,所以如果你可以在iOS(或Mac,你曾经瞄准客户端)上使用c ++版本,你可能会在服务器上很好有几种选择。