我已经开始使用 RNCryptor ,它将自己描述为“适用于 iOS 和 Mac 的 CCCryptor(AES 加密)包装器”。
我的问题不是针对 iOS 的,而是更笼统的。
这是我可能用来加密字符串的一些代码:
func encryptText(text: String, encryptionKey: String) -> NSData? {
let textData = text.dataUsingEncoding(NSUTF8StringEncoding)
if textData == nil {
return nil
}
let encryptedTextData = RNCryptor.encryptData(textData!, password: encryptionKey)
return encryptedTextData
}
我有几个担忧:
最佳答案
攻击者所能做的就是暴力破解 key ,这不是一个现实的提议,而且在知道多条消息的情况下也不会变得更容易(除非 AES 中存在一些我们不知道会产生的弱点)模式”)。
您可能想知道,如果攻击者能够访问许多截获(甚至解密)的消息,他是否还有其他优势。例如,猜测明文是否与先前的消息相似甚至相同的能力。
AES 包括设置“初始化向量”。
通常,您为每条消息设置一个随机 IV,并将其与加密消息一起发送。您的图书馆也在这样做。结果是没有两条消息以完全相同的方式加密。即使您发送相同的明文三次,它也会以三个不同的密文结束(与三个不同的消息无法区分)。与“盐渍”相同的想法。
would adding a series of random characters to the end of each string (lets say 20 characters) secure me from that type of attack?
随机 IV 机制使这变得不必要。
至于它是否有效,AES 是一种分组密码。早期 block 的输出会影响后面 block 的输出,但反之则不然。所以最后的随机填充只会改变最后一个 block 。如果有的话,你会想在开头填充你的字符串。但同样,算法本身(如果使用得当)具有处理这些问题的机制(以 IV、 block 链接和 block 填充的形式)。
关于ios - 如果用户可以访问多个使用 AES 加密的加密数据,他们是否能够猜出加密 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35938942/