objective-c - 这是在 iPhone 上生成随机字符串的好方法吗?

标签 objective-c ios security

这是我想出的代码:

NSString *randomString = @"";
for (int x=0;x<NUMBER_OF_CHARS;x++) {
  randomString = [randomString stringByAppendingFormat:@"%c", (char)(65 + (arc4random() % 25))];
}
return randomString;

编辑:

回答评论:

1) 我最关心的是代码的简洁性。

2) 我还想知道如果 NUMBER_OF_CHARS 是一个很大的数字(比如 40),这是否可以防止猜测字符串和/或防止冲突 - 不适用于此应用程序,但在其他情况下。

3) 另外,如果有一天我想制作大量的弦乐,有没有更快的方法?这看起来会很慢,因为它每次通过循环都会创建一个对象。

最佳答案

如果 NUMBER_OF_CHARS 是编译时常量,您可以通过避免重复创建对象来加速您的代码。您也可以将程序缩短一行:

char data[NUMBER_OF_CHARS];
for (int x=0;x<NUMBER_OF_CHARS;data[x++] = (char)('A' + (arc4random_uniform(26))));
return [[NSString alloc] initWithBytes:data length:NUMBER_OF_CHARS encoding:NSUTF8StringEncoding];

据我所知,arc4random_uniform 应该足以用于加密应用程序,但如果您计划保护的数据对您或特别是对您的客户。

编辑: 编辑以响应 nielsbot的评论。

关于objective-c - 这是在 iPhone 上生成随机字符串的好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10252080/

相关文章:

ios - 工厂类 - 停止初始化

objective-c - iOS Sprite Kit 如何在横向方向上使弹丸指向目标?

ios - flutter 失去与设备的连接

ios - 如何防止 NSTimer 被 iOS 5 中的用户界面操作延迟或中断

ios - 如何在 tableview 中显示联系人 - Objective C

java - J2Objc Eclipse 插件 "error: --ignore-missing-imports is no longer supported"

ios - 在无向图中查找所有非重叠循环

php - 在主要受限用户而不是 www-data 下运行 PHP 安全吗?

REST 安全性,使用基本身份验证加上 jwt token 验证是一种不好的做法吗?

Java防止反射