2

我想加密一个 NSString ,这样它就不是人类可读的。安全级别并不重要(换句话说,如果有人要解密文本,就不会有任何敏感信息可供他们窃取。

NSString *myTextToEncrypt = @"Hello World!";

[myTextToEncrypt encrypt];

// myTextToEncrypt is now something unreadable, like '2rwzdn1405'

然后我应该能够解密这个字符串

[myTextToEncrypt unencrypt]; // myTextToEncrypt should now be @"Hello World!" again

我该怎么做呢?我已经阅读了一些关于 CommonCrypto 和 AES 加密的内容,但这对于我正在尝试做的事情来说似乎有点过头了(我读过的加密方法都是针对密码或其他敏感数据的)

4

2 回答 2

3

最简单的一种是使用您自己的加密,例如

实用程序.h

@interface Utils : NSObject
+(NSString*)encyptString:(NSString*)str;
+(NSString*)decryptString:(NSString*)str;
@end

实用程序

#import "Utils.h"

int offset = 15;
@implementation Utils
+(NSString*)encyptString:(NSString*)str
{
    NSMutableString *encrptedString = [[NSMutableString alloc] init];
    for (int i = 0; i < str.length; i++) {
        unichar character = [str characterAtIndex:i];
        character += offset;
        [encrptedString appendFormat:@"%C",character];
    }
    return encrptedString;
}

+(NSString*)decryptString:(NSString*)str
{
    NSMutableString *decrptedString = [[NSMutableString alloc] init];
    for (int i = 0; i < str.length; i++) {
        unichar character = [str characterAtIndex:i];
        character -= offset;
        [decrptedString appendFormat:@"%C",character];
    }
    return decrptedString;
}
@end

如何使用它

NSString *str = @"hello world";
NSString *enr = [Utils encyptString:str];
NSLog(@"Encrypted Text=%@", enr);
NSLog(@"Decrypted Text=%@", [Utils decryptString:enr]);

日志

2013-08-11 10:44:09.409 DeviceTest[445:c07] Encrypted Text=wt{{~/~{s
2013-08-11 10:44:09.412 DeviceTest[445:c07] Decrypted Text=hello world
于 2013-08-11T05:13:08.400 回答
2

您可以使用它base64来执行此操作。

Objective-C 中有一些可用的实现(如this one)。

请注意,编码后的内容将大 30% 左右。

于 2013-08-11T05:02:20.157 回答