如果我需要混淆硬编码的iPhone密码(Oauth客户端标识符和客户端密钥),这会是一种方法吗?
NSString *a = @"a";
NSString *b = @"b";
NSString *c = @"c";
NSString *d = @"d";
NSString *e = @"e";
NSString *f = @"f";
NSString *g = @"g";
NSString *h = @"h";
NSString *i = @"i";
/* hidden */
NSString *w = @"w";
NSString *x = @"x";
NSString *y = @"y";
NSString *z = @"z";
NSString *pwd = [NSString stringWithFormat:@"%@%@%@%@%@%@%@%@", p,a,s,s,w,o,r,d];
我知道不建议使用混淆,但在阅读此OAuth secrets in mobile apps后,这似乎是唯一的方法。
答案 0 :(得分:2)
如果使用clang -O3
进行编译,则只有密码中实际使用的字母才会包含在.o文件中。您应该包含一些假装使用其余字母表的代码,例如对+ stringWithFormat
的另一个调用,其结果将被忽略。
答案 1 :(得分:1)
您可以随时离线加密有问题的文本,将加密版本存储在应用程序中,然后在您需要的位置对其进行解密。这样(至少)它不是应用程序中的纯文本。即使你上面的机制也可能在二进制文件中产生一个模式。