iOS开发

iOS常量字符串加密

2019-08-22  本文已影响0人  owen_663c

场景

iOS逆向静态分析,字符串的硬编码比较容易成为逆向者的突破口。因此有必要做一些字符串硬编码的混淆,如加密的对称加密key,md5的key,域名,接口名等。

方法

利用位运算方式 编译换算成结果 ,不会进入字符串常量区
代码事例: 原始字符串: IUIDISTP#

#define STRING_ENCRYPT_KEY 0xAC
static NSString * AES_KEY(){
    unsigned char key[] = {
        (STRING_ENCRYPT_KEY ^ 'I'),
        (STRING_ENCRYPT_KEY ^ 'U'),
        (STRING_ENCRYPT_KEY ^ 'I'),
        (STRING_ENCRYPT_KEY ^ 'D'),
        (STRING_ENCRYPT_KEY ^ 'I'),
        (STRING_ENCRYPT_KEY ^ 'S'),
        (STRING_ENCRYPT_KEY ^ 'T'),
        (STRING_ENCRYPT_KEY ^ 'P'),
        (STRING_ENCRYPT_KEY ^ '#'),
        (STRING_ENCRYPT_KEY ^ '\0')
    };
    unsigned char * p = key;
    while (((*p) ^=  STRING_ENCRYPT_KEY) != '\0') p++;
    
   return [NSString stringWithUTF8String:(const char *)key];
}

应用

NSString * str = [[EncryptionTools sharedEncryptionTools] encryptString:@"some message want to encrypted" keyString:AES_KEY() iv:nil];

总结

此方法应用于敏感字符串手动加密场景

上一篇 下一篇

猜你喜欢

热点阅读