我一直使用UUIDString作为存储在iPad上的文件的加密密钥,但由第三方进行的应用程序安全审查建议如下。
随着应用程序的启动,会生成并存储一个全局数据库密钥在钥匙串中。在生成过程中,使用iOS提供的NSUUID类的UUIDString方法。该函数生成由字母A到F、数字和连字符组成的随机字符串,并且不必要地限制了密钥空间,导致熵降低。 由于密钥仅由应用程序逻辑使用,无需被个人阅读、理解或处理,因此无需将密钥空间限制为可读字符。因此,应使用通过SecRandomCopyBytes()生成的随机256位密钥作为主密钥。
现在我已经搜索了很多并尝试了一些代码实现,但没有找到确切的东西。 我尝试过的内容:
我的理解是这应该给我一个整数,然后我应该将其转换为NSString并将其用作我的键,但我相当确定这不是此处所需的,而且上述方法总是将结果返回为0。我完全迷失了,在此感谢任何帮助。谢谢。
随着应用程序的启动,会生成并存储一个全局数据库密钥在钥匙串中。在生成过程中,使用iOS提供的NSUUID类的UUIDString方法。该函数生成由字母A到F、数字和连字符组成的随机字符串,并且不必要地限制了密钥空间,导致熵降低。 由于密钥仅由应用程序逻辑使用,无需被个人阅读、理解或处理,因此无需将密钥空间限制为可读字符。因此,应使用通过SecRandomCopyBytes()生成的随机256位密钥作为主密钥。
现在我已经搜索了很多并尝试了一些代码实现,但没有找到确切的东西。 我尝试过的内容:
NSMutableData* data = [NSMutableData dataWithLength:32];
int result = SecRandomCopyBytes(kSecRandomDefault, 32, data.mutableBytes);
NSLog(@"Description %d",result);
我的理解是这应该给我一个整数,然后我应该将其转换为NSString并将其用作我的键,但我相当确定这不是此处所需的,而且上述方法总是将结果返回为0。我完全迷失了,在此感谢任何帮助。谢谢。