我正在使用RNEncryptor
andRNDecryptor
类进行加密和解密,如下所示:
NSData *encryptedData = [RNEncryptor encryptData:input
withSettings:kRNCryptorAES256Settings
password:thePassword
error:nil];
NSData *output = [RNDecryptor decryptData:encryptedData
withSettings:kRNCryptorAES256Settings
password:thePassword
error:nil];
第一次我必须在我的应用程序中加密数据时,我使用以下RNCryptor
类生成密码:
NSData *thePasswordData = [RNCryptor randomDataOfLength:32];
NSString *thePassword = [aesPasswordData base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
我将此生成的密码保存在应用程序的钥匙串中,并将其用于所有后续加密和解密。
这是加密/解密的好策略还是任何人都可以看到其中的任何缺陷?我是否应该生成一个 AES 密钥并将其存储在钥匙串中并使用它而不是密码?
编辑:我根据 Rob Napier 的回答将上面生成密码的方式从使用NSProcessInfo
类更改为使用类。RNCryptor
除此之外,我仍然很想知道使用密码而不是 AES 密钥的一般策略是否正确和安全。